使用Julia集測試電腦效能

來源:互聯網
上載者:User


好久沒來了,這次給大家帶來一點東東。

大家都知道Julia集是一種迭代演算法,即不斷將運算所得結果再投入演算法計算,使得結果不斷接近真實值

例如我們計算π,e都是用這個演算法。

Julia集有很多形式,都需要消耗大量資源才能得出結果。而我們可以使用這個演算法測試電腦效能。

因為使用BitmapData支援,所以請使用FlashPlayer8.0播放。

/**
   ActionScript Source File -- Created with SAPIEN Technologies PrimalScript 3.1
  
   @class  Test.as
   @package
   @author tcper@163.com Loki_tang
   @codehint
   @example: import Test;
var someObject:Test=new Test;
someObject.tester(.01);
   @tooltip
*/
import flash.display.BitmapData;
class Test extends MovieClip {
 private var n:Number;
 private var cx:Number;
 private var cy:Number;
 private var x2:Number;
 private var y2:Number;
 private var rgb:Number;
 private var timeGot:Number;
 private var rgbOffset:Number;
 private var pixelPos:Number;
 private var mc:MovieClip;
 private var mcOrigin:MovieClip;
 private var myBitmapData:BitmapData;
 //a,b都是Julia集的參數
 private static var a:Number = .5;
 private static var b:Number = .55;
 private static var pixelNum:Number = 0;
 private static var timeLimitation:Number = 4000;//計算時間限制
 function Test() {
  bitmapCreator();
 }
 private function bitmapCreator():BitmapData {
  myBitmapData = new BitmapData(400, 400, false, 0xcccccccc);
  return myBitmapData;
 }
 private function mcCreator():MovieClip {
  mcOrigin = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
  return mcOrigin;
 }
 private function getRGB(i:Number,u:Number):Number {
  rgb = (i-u)*200;
  return rgb;
 }
 private function getPixelPos(i:Number):Number {
  pixelPos = Math.floor((i+1.5)*133.3);
  return pixelPos;
 }
 private function timeCheck(i:Number):Boolean {
  if ((getTimer()-i)   return true;
  } else {
   return false;
  }
 }
 //public Method;
 public static function pixelStatistic():Number {
  return pixelNum;
 }
 public function tester(u:Number):Void {
  rgbOffset = Math.floor(100*Math.random());
  timeGot = getTimer();
  var mc = mcCreator();
  mc.attachBitmap(bitmapCreator(), this.getNextHighestDepth());
  mc._x = mc._y=-200;
  //以下是Julia演算法.
  for (var i = -1.5; i<=1.5; i += u) {
   for (var j = -1.5; j<=1.5; j += u) {
    cx = i;
    cy = j;
    for (var n = 1; n<=100; n++) {
     pixelNum++;
     x2 = cx*cx-cy*cy+a;
     y2 = 2*cy*cx+b;
     cx = x2;
     cy = y2;
     if (cx*cx+cy*cy>4) {
      break;
     }
     if (!timeCheck(timeGot)) {
      return;
     }
    }
    bitmapCreator().setPixel(getPixelPos(i), getPixelPos(j), getRGB(n,rgbOffset));
   }
  }
 }
}
 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.