notice: Flash editor updated! Join the development! Thanks to MiniBuilder


embed

FAVORITE BY
:
:
:
vector
:
ベンチマークにも
FORKED
  1. package
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.text.TextField;
  5.     import flash.geom.Point;
  6.     import flash.utils.getTimer;
  7.     
  8.     public class test extends Sprite
  9.     {
  10.         private var array:Array = new Array();
  11.         private var vector:Vector.<Point> = new Vector.<Point>();
  12.         
  13.         public function test()
  14.         {
  15.             var text_field:TextField = new TextField();
  16.             text_field.width = stage.stageWidth;
  17.             text_field.height = stage.stageHeight;
  18.             stage.addChild(text_field);
  19.             
  20.             for(var i:int = 0; i < 250000; i++)
  21.             {
  22.                 array.push(new Point());
  23.                 vector.push(new Point());
  24.             }
  25.             var _str:String = new String();
  26.             _str += "Array for:" + benchMarkj(a1) + "\r";
  27.             _str += "Array for in:" + benchMarkj(a2) + "\r";
  28.             _str += "Array for each:" + benchMarkj(a3) + "\r";
  29.             _str += "Array forEach1:" + benchMarkj(a4) + "\r";
  30.             _str += "Array forEach2:" + benchMarkj(a5) + "\r";
  31.             _str += array[0].x + "\r";
  32.             _str += "Vector for:" + benchMarkj(v1) + "\r";
  33.             _str += "Vector for in:" + benchMarkj(v2) + "\r";
  34.             _str += "Vector for each:" + benchMarkj(v3) + "\r";
  35.             _str += "Vector forEach1:" + benchMarkj(v4) + "\r";
  36.             _str += "Vector forEach2:" + benchMarkj(v5) + "\r";
  37.             _str += vector[0].x + "\r";
  38.             
  39.             text_field.text = _str;
  40.         }
  41.         
  42.         private function benchMarkj(_fn:Function):int
  43.         {
  44.             var time:int = getTimer();
  45.             _fn();
  46.             return getTimer() - time;
  47.         }
  48.         
  49.         private function a1():void
  50.         {
  51.             for(var i:int = 0; i < array.length; i++) {
  52.                 array[i].x++;
  53.             }
  54.         }
  55.         
  56.         private function a2():void
  57.         {
  58.             for(var i:String in array) {
  59.                 array[i].x++;
  60.             }
  61.         }
  62.         
  63.         private function a3():void
  64.         {
  65.             for each(var pos:Point in array) {
  66.                 pos.x++;
  67.             }
  68.         }
  69.         
  70.         private function a4():void
  71.         {
  72.             array.forEach(function(pos:Point, i:int, array:Array):void
  73.             {
  74.                 pos.x++;
  75.             });
  76.         }
  77.         
  78.         private function a5():void
  79.         {
  80.             array.forEach(function(pos:Point, i:int, array:Array):void
  81.             {
  82.                 array[i].x++;
  83.             });
  84.         }
  85.         
  86.         private function v1():void
  87.         {
  88.             for(var i:int = 0; i < vector.length; i++) {
  89.                 vector[i].x++;
  90.             }
  91.         }
  92.         
  93.         private function v2():void
  94.         {
  95.             for(var i:String in vector) {
  96.                 vector[i].x++;
  97.             }
  98.         }
  99.         
  100.         private function v3():void
  101.         {
  102.             for each(var pos:Point in vector) {
  103.                 pos.x++;
  104.             }
  105.         }
  106.         
  107.         private function v4():void
  108.         {
  109.             vector.forEach(function(pos:Point, i:int, vector:Vector.<Point>):void
  110.             {
  111.                 pos.x++;
  112.             });
  113.         }
  114.         
  115.         private function v5():void
  116.         {
  117.             vector.forEach(function(pos:Point, i:int, vector:Vector.<Point>):void
  118.             {
  119.                 vector[i].x++;
  120.             });
  121.         }
  122.     }
  123. }
noswf
  1. // forked from umhr's Array,Vector,Vector3D速度比較
  2. /**
  3. 同じ長さ、値のArray,Vector,Vector3Dをaddと同じ処理を100万回実行した時の処理時間(ミリ/秒)
  4. その2
  5. MacBookPro2.4Gh,OSX 10.5.6
  6. Array0:348//前回と同じ
  7. Array1:320//決め打
  8. Vector0:85//前回と同じ
  9. Vector1:80//決め打
  10. Vector3D0:623//前回と同じ
  11. Vector3D1:17//要素毎に加算
  12. Vector3D2:656//addの代わりの関数を作った
  13. Vector3D3:625//addの代わりの関数を作った2
  14. null:6//Vector3Dをnewしてforでまわすだけ。
  15. Vector3Dを要素毎に加算すると異様に早い。
  16. けど、早すぎてちょっと信じられない感じ。
  17. いろいろ検証が必要。
  18. add以外にもいろいろ試してみるといいかも。
  19. */
  20. package {
  21.     import flash.display.Sprite;
  22.     import flash.geom.Vector3D;
  23.     import flash.text.TextField;
  24.     public class vecor3Dtest extends Sprite {
  25.         public var _a0a:Array =new Array(0.1,1.2,2.3);
  26.         public var _a0b:Array =new Array(10,20,30);
  27.         public var _v3a:Vector3D=new Vector3D(0.1,1.2,2.3);
  28.         public var _v3b:Vector3D=new Vector3D(10,20,30);
  29.         public var _v0a:Vector.<Number>=new Vector.<Number>(3);
  30.         public var _v0b:Vector.<Number>=new Vector.<Number>(3);
  31.         public function vecor3Dtest():void {
  32.             var text_field:TextField = new TextField();
  33.             text_field.width = stage.stageWidth;
  34.             text_field.height = stage.stageHeight;
  35.             stage.addChild(text_field);
  36.             
  37.             _v0a[0] = 0.1;
  38.             _v0a[1] = 1.2;
  39.             _v0a[2] = 2.3;            
  40.             _v0b[0] = 10;
  41.             _v0b[1] = 20;
  42.             _v0b[2] = 30;
  43.             
  44.             var _str:String = new String();
  45.             _str = "同じ長さ、値のArray,Vector,Vector3Dをaddと同じ処理を100万回実行した時の処理時間(ミリ秒)\r";
  46.             _str += "Array0:" + benchMarkj(_a0) + "\r";//366
  47.             _str += "Array1:" + benchMarkj(_a1) + "\r";//366
  48.             _str += "Vector0:" + benchMarkj(_v0) + "\r";//88 
  49.             _str += "Vector1:" + benchMarkj(_v1) + "\r";//88 
  50.             _str += "Vector3D0:" + benchMarkj(_30) + "\r";//615
  51.             _str += "Vector3D1:" + benchMarkj(_31) + "\r";//615
  52.             _str += "Vector3D2:" + benchMarkj(_32) + "\r";//615
  53.             _str += "Vector3D3:" + benchMarkj(_32) + "\r";//615
  54.             _str += "null:" + benchMarkj(_00) + "\r";//615
  55.             text_field.text = _str;
  56.         }
  57.         
  58.         //100万回関数を実行して、かかった時間をtrace 
  59.         private function benchMarkj(_fn:Function):int {
  60.             var time:Number = (new Date()).getTime();
  61.             _fn(1000000);
  62.             return (new Date()).getTime() - time;
  63.         }
  64.         
  65.         private function _a0(n:uint):void {
  66.             var _a0c:Array =new Array();
  67.             for (var i:int = 0; i < n; i++) {
  68.                 for (var j:int = 0; j < 3; j++) {
  69.                     _a0c[j] = _a0a[j]+_a0b[j];
  70.                 }
  71.             }
  72.             //trace(_a0c);
  73.         }
  74.         
  75.         private function _a1(n:uint):void {
  76.             var _a0c:Array =new Array();
  77.             for (var i:int = 0; i < n; i++) {
  78.                 _a0c[int(0)] = _a0a[int(0)]+_a0b[int(0)];
  79.                 _a0c[int(1)] = _a0a[int(1)]+_a0b[int(1)];
  80.                 _a0c[int(2)] = _a0a[int(2)]+_a0b[int(2)];
  81.             }
  82.             //trace(_a0c);
  83.         }
  84.         
  85.         private function _v0(n:uint):void {
  86.             var _v0c:Vector.<Number>=new Vector.<Number>(3);
  87.             for (var i:int = 0; i < n; i++) {
  88.                             for (var j:int = 0; j < 3; j++) {
  89.                     _v0c[j] = _v0a[j]+_v0b[j];
  90.                 }
  91.                         }
  92.             //trace(_v0c);
  93.         }
  94.         
  95.         private function _v1(n:uint):void {
  96.             var _v0c:Vector.<Number>=new Vector.<Number>(3);
  97.             for (var i:int = 0; i < n; i++) {
  98.                 _v0c[int(0)] = _v0a[int(0)]+_v0b[int(0)];
  99.                 _v0c[int(1)] = _v0a[int(1)]+_v0b[int(1)];
  100.                 _v0c[int(2)] = _v0a[int(2)]+_v0b[int(2)];
  101.             }
  102.             //trace(_v0c);
  103.         }
  104.         
  105.         
  106.         private function _30(n:uint):void {
  107.             var _v3c:Vector3D=new Vector3D();
  108.             for (var i:int = 0; i < n; i++) {
  109.                 _v3c = _v3a.add(_v3b);
  110.             }
  111.             //trace(_v3c);
  112.         }
  113.         
  114.         private function _31(n:uint):void {
  115.             var _v3c:Vector3D=new Vector3D();
  116.             for (var i:int = 0; i < n; i++) {
  117.                 _v3c.x = _v3a.x + _v3b.x;
  118.                 _v3c.y = _v3a.y + _v3b.y;
  119.                 _v3c.z = _v3a.z + _v3b.z;
  120.             }
  121.             //trace(_v3c);
  122.         }
  123.         private function _32(n:uint):void {
  124.             var _v3c:Vector3D=new Vector3D();
  125.             for (var i:int = 0; i < n; i++) {
  126.                 _v3c = vAdd2(_v3a,_v3b)
  127.             }
  128.         }
  129.         
  130.         private function vAdd2(_v0:Vector3D,_v1:Vector3D):Vector3D{
  131.             var _v2:Vector3D=new Vector3D();
  132.             _v2.x = _v0.x + _v1.x;
  133.             _v2.y = _v0.y + _v1.y;
  134.             _v2.z = _v0.z + _v1.z;
  135.             return _v2;
  136.         }        
  137.         private function _33(n:uint):void {
  138.             var _v3c:Vector3D=new Vector3D();
  139.             for (var i:int = 0; i < n; i++) {
  140.                 vAdd3(_v3a,_v3b);
  141.             }
  142.         }
  143.         
  144.         private function vAdd3(_v0:Vector3D,_v1:Vector3D):void{
  145.             _v0.x = _v0.x + _v1.x;
  146.             _v0.y = _v0.y + _v1.y;
  147.             _v0.z = _v0.z + _v1.z;
  148.         }        
  149.         private function _00(n:uint):void {
  150.             var _v3c:Vector3D=new Vector3D();
  151.             for (var i:int = 0; i < n; i++) {
  152.             }
  153.         }
  154.         
  155.     }
  156. }
noswf
Get Adobe Flash Player