Accessor Performance Test アクセッサのパフォーマンステスト test1 の結果が不思議. hycro forked:1favorite:0lines:216license : MIT License modified : 2010-06-19 00:45:11 Embed Tweet // アクセッサのパフォーマンステスト // test1 の結果が不思議. package { import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.utils.getTimer; public class AccesserPerformanceTest extends Sprite { private static const LOOP_NUM:uint = 5000000; private var _tf:TextField; public function AccesserPerformanceTest() { _tf = new TextField(); _tf.width = stage.stageWidth; _tf.height = stage.stageHeight; addChild(_tf); test1(); test2(); test3(); test4(); test5(); test6(); test7(); test8(); test9(); } private function test1():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var obj:Object = {}; var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.obj = obj; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.obj = obj; } var ed2:uint = getTimer(); _tf.appendText("object(set only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test2():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var str:String = "string"; var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.str = str; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.str = str; } var ed2:uint = getTimer(); _tf.appendText("string(set only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test3():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.num = 1; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.num = 1; } var ed2:uint = getTimer(); _tf.appendText("int(set only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test4():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.obj; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.obj; } var ed2:uint = getTimer(); _tf.appendText("object(get only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test5():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.str; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.str; } var ed2:uint = getTimer(); _tf.appendText("string(get only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test6():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.num; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.num; } var ed2:uint = getTimer(); _tf.appendText("int(get only)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test7():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.obj = classA.obj; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.obj = classB.obj; } var ed2:uint = getTimer(); _tf.appendText("object(set/get)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test8():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.str = classA.str; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.str = classB.str; } var ed2:uint = getTimer(); _tf.appendText("string(set/get)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } private function test9():void { var classA:ClassA = new ClassA(); var classB:ClassB = new ClassB(); var st:uint = getTimer(); for (var i:uint = 0; i < LOOP_NUM; i++) { classA.num += 1; } var ed:uint = getTimer(); var st2:uint = getTimer(); for (var j:uint = 0; j < LOOP_NUM; j++) { classB.num += 1; } var ed2:uint = getTimer(); _tf.appendText("int(set/get)------------------------\n"); _tf.appendText("classA > " + (ed - st) + " ms\n"); _tf.appendText("classB > " + (ed2 - st2) + " ms\n"); _tf.appendText("\n"); } } } class ClassA { public var obj:Object = {}; public var str:String = "string"; public var num:int = 0; } class ClassB { private var _obj:Object = {}; private var _str:String = "string"; private var _num:int = 0; public function get num():int { return _num; } public function set num(value:int):void { _num = value; } public function get str():String { return _str; } public function set str(value:String):void { _str = value; } public function get obj():Object { return _obj; } public function set obj(value:Object):void { _obj = value; } } Code Fullscreen Preview Fullscreen appendText Object height width String TextField addChild Sprite int uint sort new page view favorite forked pv120 forked from: Accessor Performa.. diemailbittezumir1 forked:0 favorite:0lines:216 (diff:244)