最適化Tips 分岐条件の中で計算を行わない方が良い forked from: 最適化Tips 分岐条件の中で計算を行わない方が良い
- // 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>
notice: 

