forked from: 関数のオーバーヘッドありすぎない?
forked from 関数のオーバーヘッドありすぎない? (diff: 19)
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;
}
}
}