※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

FAVORITE BY
:
:
速度をもとめない場合は、可読性のために私はよく使ってますよー
:
うーん。デザイナー用?
:
1.実装によるバグが起きにくい 2.処理内容が明確 3.(min,maxについて)複数の値の比較が容易(applyで配列を渡せる) 4.逆に考えるんだ、そこまでループさせないと差はでないと・・・!w
:
:
optimizationメソッド呼び出しがすごく遅い感じ
:
ほんとに何のためにあるんですかね・・・?
:
速度が違いすぎる…当方の環境で7~10倍程度差が出てます…
FORKED

Math.absとMath.min Math.maxは何のためにあるの? forked from: Math.absとMath.min Math.maxは何のためにあるの? [diff(13)]

  1. // forked from tail_y's Math.absとMath.min Math.maxは何のためにあるの?
  2. // forked from tail_y's forked from: [最適化 Tips] Number, int, uint の計算による処理速度の違い
  3. // forked from muta244's [最適化 Tips] Number, int, uint の計算による処理速度の違い
  4. // min,max,absみたいな関数はマクロで実装できればいいのにと思う
  5. package {
  6. import flash.display.*;
  7. import flash.geom.*;
  8. import flash.events.*;
  9. import flash.text.*;
  10. import flash.utils.*;
  11. public class Main extends Sprite
  12. {
  13.     static private const _NUM_TIMES:int = 1000000;
  14.     
  15.     private function _init():void
  16.     {
  17.         _debug(
  18.             "各テスト " + _NUM_TIMES + " 回処理させた計算結果 [単位 : ミリ秒]\n" +
  19.             "(誤差は多少生じます)\n"
  20.         );
  21.         
  22.         
  23.         _measure("ループのみ"function ():void
  24.         {
  25.             var n1:Number = Math.random()*10 - 5;
  26.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  27.                 
  28.             }
  29.         });
  30.         
  31.         _measure("ループ+関数呼び出し"function ():void
  32.         {
  33.             var n1:Number = Math.random()*10 - 5;
  34.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  35.                 nullFunc(n1);
  36.             }
  37.         });
  38.         
  39.         _measure("n2 = Math.abs(n1);"function ():void
  40.         {
  41.             var n1:Number = Math.random()*10 - 5;
  42.             var n2:Number;
  43.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  44.                 n2 = Math.abs(n1);
  45.             }
  46.         });
  47.         
  48.         _measure("n2 = (0 < n1) ? n1 : -n1;"function ():void
  49.         {
  50.             var n1:Number = Math.random()*10 - 5;
  51.             var n2:Number;
  52.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  53.                 n2 = (0 < n1) ? n1 : -n1;
  54.             }
  55.         });
  56.         
  57.         _measure("n3 = Math.max(n1, n2);"function ():void
  58.         {
  59.             var n1:Number = Math.random()*10 - 5;
  60.             var n2:Number = Math.random()*10 - 5;
  61.             var n3:Number;
  62.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  63.                 n3 = Math.max(n1, n2);
  64.             }
  65.         });
  66.         
  67.         _measure("n3 = (n2 < n1) ? n1 : n2;"function ():void
  68.         {
  69.             var n1:Number = Math.random()*10 - 5;
  70.             var n2:Number = Math.random()*10 - 5;
  71.             var n3:Number;
  72.             for (var i:uint = 0; i < _NUM_TIMES; i++) {
  73.                 n3 = (n2 < n1) ? n1 : n2;
  74.             }
  75.         });
  76.         
  77.         _debug("\n関数呼び出しによるオーバーヘッドは大きいという結果。");
  78.     }
  79.     
  80.     private var _field:TextField;
  81.     private var _time:uint;
  82.     
  83.     public function Main():void
  84.     {
  85.         _setup();
  86.         _init();
  87.     }
  88.     
  89.     private function _measure(title:String, func:Function, ...params):void
  90.     {
  91.         _time = getTimer();
  92.         func.apply(null, params);
  93.         _time = getTimer() - _time;
  94.         
  95.         _debug("[ " + title + " ] --> " + _time + " ms");
  96.     }
  97.     
  98.     private function _debug(log:String):void
  99.     {
  100.         _field.appendText(log + "\n");
  101.     }
  102.     
  103.     private function _setup():void
  104.     {
  105.         _field = new TextField();
  106.         _field.width = stage.stageWidth - 40;
  107.         _field.height = stage.stageHeight - 60;
  108.         _field.x = 20;
  109.         _field.y = 60;
  110.         _field.multiline = true;
  111.         _field.wordWrap = true;
  112.         
  113.         var format:TextFormat = _field.defaultTextFormat;
  114.         format.font = "_sans";
  115.         _field.defaultTextFormat = format;
  116.         
  117.         addChild(_field);
  118.         
  119.         var button:Sprite = new Sprite();
  120.         button.graphics.lineStyle(1, 0xBBBBBB);
  121.         button.graphics.beginFill(0xEEEEEE);
  122.         button.graphics.drawRoundRect(001002055);
  123.         button.graphics.endFill();
  124.         
  125.         addChild(button);
  126.         
  127.         button.x = 20;
  128.         button.y = 20;
  129.         button.mouseChildren = false;
  130.         button.buttonMode = true;
  131.         
  132.         var field:TextField = new TextField();
  133.         field.width = 100;
  134.         field.height = 20;
  135.         field.htmlText = "<p align='center'><font face='_sans'>再計算</span></p>";
  136.         
  137.         button.addChild(field);
  138.         
  139.         button.addEventListener(MouseEvent.CLICK, function ():void
  140.         {
  141.             _field.text = "";
  142.             _init();
  143.         });
  144.     }
  145.     
  146.     private function nullFunc(n:Number):void {}
  147. }
  148. }
noswf
Get Adobe Flash Player