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


embed

FORKED

最適化Tips 分岐条件の中で計算を行わない方が良い forked from: 最適化Tips 分岐条件の中で計算を行わない方が良い [diff(1)]

  1. // forked from mtok's 最適化Tips 分岐条件の中で計算を行わない方が良い
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="appCompleteHandler(event)">
  4.     <mx:Script>
  5.     <![CDATA[
  6.     import flash.events.MouseEvent;
  7.     import mx.events.FlexEvent;
  8.     import mx.controls.Alert;
  9.     import flash.system.Capabilities;
  10.     import flash.utils.getTimer;
  11.     
  12.     private var loopCount:int = 1000000;
  13.     public function appCompleteHandler(event:FlexEvent):void{
  14.         if(Capabilities.isDebugger){
  15.             var msg:String = "デバッグ版のプレーヤを使用しています。正しいベンチマークの結果を得るにはリリース版を使用することをお勧めします。";
  16.             Alert.show(msg, "インフォメーション");
  17.         }
  18.         console.text += "OS : " + Capabilities.os + "\n";
  19.         console.text += "Vesion : " + Capabilities.version + "\n";
  20.         console.text += "Type : " + Capabilities.playerType + "\n";
  21.         Capabilities.isDebugger ? console.text += "Debug version\n" : null;
  22.     }
  23.     public function clickHandler(event:MouseEvent):void{
  24.         startBenchmark();
  25.     }
  26.     public function clear(event:MouseEvent):void {
  27.         console.text = "";
  28.     }
  29.     public function startBenchmark():void{
  30.         var i:int;
  31.         var tmp:Number = 0;
  32.         console.text += "start benchimarking\n";
  33.         
  34.         i = 0;
  35.         var time:int = getTimer();
  36.         while (i++ < loopCount) {
  37.             tmp *= tmp;
  38.         }
  39.         var dt:int
  40.         dt = getTimer() - time;
  41.         
  42.         console.text += "ケース1:条件式内で計算を行う場合" + dt + "ms\n"
  43.         
  44.         i = 0;
  45.         tmp = 0;
  46.         time = getTimer();
  47.         while(i < loopCount){
  48.             i++;
  49.             tmp *= tmp;
  50.         }
  51.         dt = getTimer() - time;
  52.         console.text += "ケース1:条件式内で計算を行わない場合" + dt + "ms\n"
  53.         
  54.         i = 0;
  55.         time = getTimer();
  56.         while(i < loopCount){
  57.             if ((tmp = Math.sin(i)) < 0) {
  58.                 
  59.             }
  60.             i++;
  61.         }
  62.         dt = getTimer() - time;
  63.                 console.text += "\n";
  64.         console.text += "ケース2:条件式内で計算を行う場合" + dt + "ms\n"
  65.         i = 0;
  66.         time = getTimer();
  67.         while(i < loopCount){
  68.             tmp = Math.sin(i);
  69.             if(tmp < 0){
  70.                 
  71.             }
  72.             i++;
  73.         }
  74.         dt = getTimer() - time;
  75.         console.text += "ケース2:条件式内で計算を行わない場合" + dt + "ms\n"
  76.         
  77.         console.text += "\n"
  78.     }
  79.     ]]>
  80.     </mx:Script>
  81.     <mx:VBox width="100%" height="100%">
  82.         <mx:TextArea id="console" width="100%" height="100%"></mx:TextArea>
  83.         <mx:HBox width="100%">
  84.             <mx:Button label="Start" click="clickHandler(event)" />
  85.             <mx:Button label="Clear" click="clear(event)" />
  86.         </mx:HBox>
  87.     </mx:VBox>
  88. </mx:Application>
noswf
Get Adobe Flash Player