package
{
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import flash.utils.*;
/**
* An app to test the performance of getters against public variables
* @author Jackson Dunstan
*/
public class Main extends Sprite
{
public function Main ()
{
var logger:TextField = new TextField();
logger.autoSize = TextFieldAutoSize.LEFT;
addChild(logger);
function log(msg:*): void { logger.appendText(msg+"\n"); }
const spr:Sprite = new Sprite();
const mySpr:MySprite = new MySprite();
const point:Point = new Point();
const NUM_ITS:int = 10000000;
var i:int;
var beforeTime:int;
var myPoint:MyPoint = new MyPoint();
beforeTime = getTimer();
for (i = 0; i < NUM_ITS; ++i)
{
spr.x;
}
log("Sprite.x: " + (getTimer()-beforeTime));
beforeTime = getTimer();
for (i = 0; i < NUM_ITS; ++i)
{
point.x;
}
log("Point.x: " + (getTimer()-beforeTime));
mySpr.updateCache();
beforeTime = getTimer();
for (i = 0; i < NUM_ITS; ++i)
{
mySpr.cachedX;
}
log("MySprite.x: " + (getTimer()-beforeTime));
beforeTime = getTimer();
for (i = 0; i < NUM_ITS; ++i)
{
myPoint.x;
}
log("MyPoint.x: " + (getTimer() - beforeTime));
/*
Sprite.x: 1618
Point.x: 822
MySprite.x: 796
MyPoint.x: 2588
*/
}
}
}
import flash.display.*;
class MySprite extends Sprite
{
public var cachedX:Number;
public var cachedY:Number;
public function updateCache(): void
{
this.cachedX = this.x;
this.cachedY = this.y;
}
}
class MyPoint
{
private var __x:Number;
private var __y:Number;
public function get x(): Number { return __x; }
public function get y(): Number { return __y; }
}