Forked from: mtok's 最適化Tips 分岐条件の中で計算を行わない方が良い diff:1 forked from: 最適化Tips 分岐条件の中で計算を行わない方が良い charliepal forked:0favorite:0lines:79license : All rights reserved modified : 2009-01-30 06:34:33 Embed Tweet // forked from mtok's 最適化Tips 分岐条件の中で計算を行わない方が良い <?xml version="1.0" encoding="utf-8" ?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="appCompleteHandler(event)"> <mx:Script> <![CDATA[ import flash.events.MouseEvent; import mx.events.FlexEvent; import mx.controls.Alert; import flash.system.Capabilities; import flash.utils.getTimer; private var loopCount:int = 1000000; public function appCompleteHandler(event:FlexEvent):void{ if(Capabilities.isDebugger){ var msg:String = "デバッグ版のプレーヤを使用しています。正しいベンチマークの結果を得るにはリリース版を使用することをお勧めします。"; Alert.show(msg, "インフォメーション"); } console.text += "OS : " + Capabilities.os + "\n"; console.text += "Vesion : " + Capabilities.version + "\n"; console.text += "Type : " + Capabilities.playerType + "\n"; Capabilities.isDebugger ? console.text += "Debug version\n" : null; } public function clickHandler(event:MouseEvent):void{ startBenchmark(); } public function clear(event:MouseEvent):void { console.text = ""; } public function startBenchmark():void{ var i:int; var tmp:Number = 0; console.text += "start benchimarking\n"; i = 0; var time:int = getTimer(); while (i++ < loopCount) { tmp *= tmp; } var dt:int dt = getTimer() - time; console.text += "ケース1:条件式内で計算を行う場合" + dt + "ms\n"; i = 0; tmp = 0; time = getTimer(); while(i < loopCount){ i++; tmp *= tmp; } dt = getTimer() - time; console.text += "ケース1:条件式内で計算を行わない場合" + dt + "ms\n"; i = 0; time = getTimer(); while(i < loopCount){ if ((tmp = Math.sin(i)) < 0) { } i++; } dt = getTimer() - time; console.text += "\n"; console.text += "ケース2:条件式内で計算を行う場合" + dt + "ms\n"; i = 0; time = getTimer(); while(i < loopCount){ tmp = Math.sin(i); if(tmp < 0){ } i++; } dt = getTimer() - time; console.text += "ケース2:条件式内で計算を行わない場合" + dt + "ms\n"; console.text += "\n"; } ]]> </mx:Script> <mx:VBox width="100%" height="100%"> <mx:TextArea id="console" width="100%" height="100%"></mx:TextArea> <mx:HBox width="100%"> <mx:Button label="Start" click="clickHandler(event)" /> <mx:Button label="Clear" click="clear(event)" /> </mx:HBox> </mx:VBox> </mx:Application> Code Fullscreen Preview Fullscreen Capabilities.version