Performance Comparision of various field access methods

by leichtgewicht
♥0 | Line 43 | Modified 2011-11-22 23:49:51 | MIT License
play

ActionScript3 source code

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

package {
    import flash.utils.getTimer;
    import flash.text.TextField;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        private var t: TextField;
        
        public function FlashTest() {
            addChild( t = new TextField() );
            var setter: Test = new Test();
            var inter: ITest = new Test();
            var publ: Test = new Test();
            
            var time: Number;
            var i: int;
            const c: int = 10000000;
            time = getTimer();
            for( i = 0; i<c; ++i ) {
                setter.simple= "hi";
            }
            t.appendText((getTimer()-time)+"ms for using a setter\n");
            time = getTimer();
            for( i = 0; i<c; ++i ) {
                inter.simple= "hi";
            }
            t.appendText((getTimer()-time)+"ms for using a interface\n");
            time = getTimer();
            for( i = 0; i<c; ++i ) {
                publ._simple= "hi";
            }
            t.appendText((getTimer()-time)+"ms for using a non function access\n");

            
            t.width = stage.stageWidth;
            t.height = stage.stageHeight;
        }
    }
}

class Test implements ITest {
    
    public var _simple: String;
    
    public function set simple(simple:String):void {
        _simple = simple;
    }

}

interface ITest {
    function set simple(test:String):void;
}