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

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

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


FORKED
  1. // forked from uwi's uint vs int
  2. // muta244のツールキットを借り
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.geom.*;
  7.     import flash.text.*;
  8.     import flash.utils.*;
  9.     public class Main extends Sprite {
  10.         static private const _NUM_TIMES:uint = 1000000;
  11.         static private var numTimes:uint = 1000000;
  12.         static public function get constGetter():uint {
  13.             return _NUM_TIMES;
  14.         }
  15.         static public function get varGetter():uint {
  16.             return numTimes;
  17.         }
  18.         static public function getConst():uint {
  19.             return _NUM_TIMES;
  20.         }
  21.         static public function getVar():uint {
  22.             return numTimes;
  23.         }
  24.         private function _init():void {
  25.             _debug("各テスト " + _NUM_TIMES + " 回処理させた計算結果 [単位 : ミリ秒]\n" + "(誤差は多少生じます)\n");
  26.             var inst:uint;
  27.                         var testVal:Number = 10000;
  28.             _measure("const"function():void {
  29.                     for(var i:uint = 0; i <= 1000000; i++) {
  30.                     }
  31.                 });
  32.             _measure("static const ref"function():void {
  33.                     for(var i:uint = 0; i <= _NUM_TIMES; i++) {
  34.                     }
  35.                 });
  36.             _measure("static var ref"function():void {
  37.                     for(var i:uint = 0; i <= numTimes; i++) {
  38.                     }
  39.                 });
  40.             _measure("static const getter"function():void {
  41.                     for(var i:uint = 0; i <= constGetter; i++) {
  42.                     }
  43.                 });
  44.             _measure("static var getter"function():void {
  45.                     for(var i:uint = 0; i <= varGetter; i++) {
  46.                     }
  47.                 });
  48.             _measure("static const func"function():void {
  49.                     for(var i:uint = 0; i <= getConst(); i++) {
  50.                     }
  51.                 });
  52.             _measure("static var func"function():void {
  53.                     for(var i:uint = 0; i <= getVar(); i++) {
  54.                     }
  55.                 });
  56.             _debug("\n結果については言及しませんので, 各自ご判断ください.");
  57.         }
  58.         private var _field:TextField;
  59.         private var _time:uint;
  60.         public function Main():void {
  61.             _setup();
  62.             _init();
  63.         }
  64.         private function _measure(title:String, func:Function, ... params):void {
  65.             _time = getTimer();
  66.             func.apply(null, params);
  67.             _time = getTimer() - _time;
  68.             _debug("[ " + title + " ] --> " + _time + " ms");
  69.         }
  70.         private function _debug(log:String):void {
  71.             _field.appendText(log + "\n");
  72.         }
  73.         private function _setup():void {
  74.             _field = new TextField();
  75.             _field.width = stage.stageWidth - 40;
  76.             _field.height = stage.stageHeight - 60;
  77.             _field.x = 20;
  78.             _field.y = 60;
  79.             _field.multiline = true;
  80.             _field.wordWrap = true;
  81.             var format:TextFormat = _field.defaultTextFormat;
  82.             format.font = "_sans";
  83.             _field.defaultTextFormat = format;
  84.             addChild(_field);
  85.             var button:Sprite = new Sprite();
  86.             button.graphics.lineStyle(1, 0xBBBBBB);
  87.             button.graphics.beginFill(0xEEEEEE);
  88.             button.graphics.drawRoundRect(001002055);
  89.             button.graphics.endFill();
  90.             addChild(button);
  91.             button.x = 20;
  92.             button.y = 20;
  93.             button.mouseChildren = false;
  94.             button.buttonMode = true;
  95.             var field:TextField = new TextField();
  96.             field.width = 100;
  97.             field.height = 20;
  98.             field.htmlText = "<p align='center'><font face='_sans'>再計算</span></p>";
  99.             button.addChild(field);
  100.             button.addEventListener(MouseEvent.CLICK, function():void {
  101.                     _field.text = "";
  102.                     _init();
  103.                 });
  104.         }
  105.     }
  106. }
noswf
  1. // forked from uwi's uint vs int
  2. // muta244のツールキットを借り
  3. package {
  4. import flash.display.*;
  5. import flash.geom.*;
  6. import flash.events.*;
  7. import flash.text.*;
  8. import flash.utils.*;
  9. public class Main extends Sprite
  10. {
  11.     private const _NUM_TIMES:int = 10000000;
  12.     private const _NUM_TIMES_U:uint = 10000000;
  13.     
  14.     private function _init():void
  15.     {
  16.         _debug(
  17.             "各テスト " + _NUM_TIMES + " 回処理させた計算結果 [単位 : ミリ秒]\n" +
  18.             "(誤差は多少生じます)\n"
  19.         );
  20.         
  21.         
  22.         _measure("--i, int"function ():void
  23.         {
  24.             for (var i:int = _NUM_TIMES - 1; i >= 0; --i) {
  25.             }
  26.         });
  27.         
  28.         _measure("i--, int"function ():void
  29.         {
  30.             for (var i:int = _NUM_TIMES - 1; i >= 0; i--) {
  31.             }
  32.         });
  33.         
  34.         _measure("--i, uint"function ():void
  35.         {
  36.             for (var i:uint = _NUM_TIMES_U - 1; i > 0; --i) {
  37.             }
  38.         });
  39.         
  40.         _measure("i--, uint"function ():void
  41.         {
  42.             for (var i:uint = _NUM_TIMES_U - 1; i > 0; i--) {
  43.             }
  44.         });
  45.         
  46.         _measure("++i, int"function ():void
  47.         {
  48.             for (var i:int = 0; i < _NUM_TIMES; ++i) {
  49.             }
  50.         });
  51.         
  52.         _measure("i++, int"function ():void
  53.         {
  54.             for (var i:int = 0; i < _NUM_TIMES; i++) {
  55.             }
  56.         });
  57.         
  58.         _measure("++i, uint"function ():void
  59.         {
  60.             for (var i:uint = 0; i < _NUM_TIMES_U; ++i) {
  61.             }
  62.         });
  63.         
  64.         _measure("i++, uint"function ():void
  65.         {
  66.             for (var i:uint = 0; i < _NUM_TIMES_U; i++) {
  67.             }
  68.         });
  69.         
  70.         _debug("\n--- octech追記 ---");
  71.         _debug("元々のソースではintのiがuintの定数と比較されているのが問題。");
  72.         _debug("同じ型の変数との比較に変更したらuintとintの差は無くなりました。");
  73.         _debug("当たり前の結論だが、元コードは迷信を作ってしまっているよね。");
  74.         _debug("あと、++の方が--より遅いわけではなく、比較対象が0か変数かの違いが大きいはず.");
  75.         _debug("個人的には前置演算子と後置演算子で違いがほとんど無いことが分かったことが収穫.");
  76.     }
  77.     
  78.     private var _field:TextField;
  79.     private var _time:uint;
  80.     
  81.     public function Main():void
  82.     {
  83.         _setup();
  84.         _init();
  85.     }
  86.     
  87.     private function _measure(title:String, func:Function, ...params):void
  88.     {
  89.         _time = getTimer();
  90.         func.apply(null, params);
  91.         _time = getTimer() - _time;
  92.         
  93.         _debug("[ " + title + " ] --> " + _time + " ms");
  94.     }
  95.     
  96.     private function _debug(log:String):void
  97.     {
  98.         _field.appendText(log + "\n");
  99.     }
  100.     
  101.     private function _setup():void
  102.     {
  103.         _field = new TextField();
  104.         _field.width = stage.stageWidth - 40;
  105.         _field.height = stage.stageHeight - 60;
  106.         _field.x = 20;
  107.         _field.y = 60;
  108.         _field.multiline = true;
  109.         _field.wordWrap = true;
  110.         
  111.         var format:TextFormat = _field.defaultTextFormat;
  112.         format.font = "_sans";
  113.         _field.defaultTextFormat = format;
  114.         
  115.         addChild(_field);
  116.         
  117.         var button:Sprite = new Sprite();
  118.         button.graphics.lineStyle(1, 0xBBBBBB);
  119.         button.graphics.beginFill(0xEEEEEE);
  120.         button.graphics.drawRoundRect(001002055);
  121.         button.graphics.endFill();
  122.         
  123.         addChild(button);
  124.         
  125.         button.x = 20;
  126.         button.y = 20;
  127.         button.mouseChildren = false;
  128.         button.buttonMode = true;
  129.         
  130.         var field:TextField = new TextField();
  131.         field.width = 100;
  132.         field.height = 20;
  133.         field.htmlText = "<p align='center'><font face='_sans'>再計算</span></p>";
  134.         
  135.         button.addChild(field);
  136.         
  137.         button.addEventListener(MouseEvent.CLICK, function ():void
  138.         {
  139.             _field.text = "";
  140.             _init();
  141.         });
  142.     }
  143. }
  144. }
noswf
Get Adobe Flash Player