【FinalClassTest】finalキーワードによる高速化の検証 (変数アクセス版)

by wetcradle forked from 【FinalClassTest】finalキーワードによる高速化の検証 (diff: 24)
変数アクセスについても検証を行ってみた。
これもfinalとすることで高速化を行うことはできなかった。
ラルフがflashcampで言っていたことはどういう事だったんだろうか。
♥0 | Line 35 | Modified 2010-03-25 13:30:23 | MIT License
play

ActionScript3 source code

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

// forked from wetcradle's 【FinalClassTest】finalキーワードによる高速化の検証
/**
変数アクセスについても検証を行ってみた。
これもfinalとすることで高速化を行うことはできなかった。
ラルフがflashcampで言っていたことはどういう事だったんだろうか。
*/
package {
    import flash.display.Sprite;
    import flash.text.TextField;
    public class FinalClassTest extends Sprite {
        public function FinalClassTest():void {
			var textField:TextField = new TextField();
			textField.width = textField.height = 400;
			addChild(textField);
			textField.text = "not final, final\n";
			
			var notFinalSum:Number = 0;
			var finalSum:Number = 0;
			var notFinalClass:Object = new NotFinalClass();
			var finalClass:Object = new FinalClass();
			for (var i:int=0; i<10; i++) {
				var notFinalTime:Number = doTest(notFinalClass);
				var finalTime:Number = doTest(finalClass);
				notFinalSum += notFinalTime;
				finalSum += finalTime;
				textField.appendText(String(notFinalTime)+", "+String(finalTime)+"\n");
			}
			textField.appendText(String(notFinalSum)+", "+String(finalSum)+"\n");
        }
		private function doTest(object:Object):Number {
			var startDate:Date = new Date();
			for (object.value=0; object.value<1e+6; object.value++);
			return new Date().time - startDate.time;
		}
    }
}

class NotFinalClass {
	public var value:int;
}

final class FinalClass {
	public var value:int;
}