forked from: 関数のオーバーヘッドありすぎない?

by o8que forked from 関数のオーバーヘッドありすぎない? (diff: 19)
♥0 | Line 54 | Modified 2010-04-21 15:37:48 | MIT License
play

ActionScript3 source code

/**
 * Copyright o8que ( http://wonderfl.net/user/o8que )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/tQWl
 */

// forked from keno42's 関数のオーバーヘッドありすぎない?
package {
    import flash.display.Sprite;
    import flash.text.*;
    import flash.utils.*;
    public class FlashTest extends Sprite {
        private var tf:TextField = new TextField();
        private var func2:Function;
        public function FlashTest() {
            // write as3 code here..
            addChild(tf);
            tf.autoSize = "left";
            var str:String = "";
            var i:Number = 0;
            var j:Number;
            var count:int = 2000000;
            var time:Number;
            
            var func1:Function = function(value:Number):Number{
                return (value + value * value) / value;
            }
            
            func2 = func;
            var func3:Function = func;
            
            time = Number(getTimer());
            for( i=0; i < count; i++ ){
                j = (i + i * i) / i;
            }
            str = "インライン: " + String(Number(getTimer())-time) + "\n";
            str += "\n";
            
            time = Number(getTimer());
            for( i=0; i < count; i++ ){
                j = func(i);
            }
            str += "private関数: " + String(Number(getTimer())-time) + "\n";
            
            time = Number(getTimer());
            for( i=0; i < count; i++ ){
                j = func2(i);
            }
            str += "メソッドクロージャ(インスタンス変数): " + String(Number(getTimer())-time) + "\n";
            
            time = Number(getTimer());
            for( i=0; i < count; i++ ){
                j = func3(i);
            }
            str += "メソッドクロージャ(ローカル変数): " + String(Number(getTimer())-time) + "\n";
            str += "\n";
            
            time = Number(getTimer());
            for( i=0; i < count; i++ ){
                j = func1(i);
            }
            str += "関数: " + String(Number(getTimer())-time) + "\n";
            
            tf.text = str;
            
        }
        private function func(value:Number):Number{
            return (value + value * value) / value;
        }    
    }
}