<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" verticalGap="20" viewSourceURL="srcview/index.html">
<mx:Style source="styles/yflexskin.css" />
<mx:Script>
<![CDATA[
import classes.TestResult;
import mx.collections.ArrayCollection;
import classes.TestInstanceMethod;
import classes.TestStaticMethod;
[Bindable]
private var executionTimes:ArrayCollection = new ArrayCollection();
private var iterations:int = 5000000;
private var currentTest:TestResult;
private var instanceClass:TestInstanceMethod = new TestInstanceMethod();
private var testInProgress:Boolean = false;
private function startTest():void{
if(!testInProgress){
currentTest = new TestResult();
testInProgress = true;
startInstanceMethods();
}else{
testInProgress = false;
startStaticMethods();
}
}
private function startInstanceMethods():void{
var startTime:int = getTimer();
for(var i:int=0; i<iterations; i++){
instanceClass.testMethod();
}
var endTime:int = getTimer();
var executionTime:int = endTime - startTime;
currentTest.instanceTime = executionTime;
btn_main.label = "Test Static Method";
btn_main.enabled = true;
txt_main.text = "Instance method executed in: " + executionTime + " ms";
txt_main.text += "\n\nPress the button again to compare the static method.";
}
private function startStaticMethods():void{
var startTime:int = getTimer();
for(var i:int=0; i<iterations; i++){
TestStaticMethod.testMethod();
}
var endTime:int = getTimer();
var executionTime:int = endTime - startTime;
currentTest.staticTime = executionTime;
currentTest.difference = currentTest.staticTime - currentTest.instanceTime;
executionTimes.addItem(currentTest);
btn_main.label = "Test Instance Method Again";
btn_main.enabled = true;
txt_main.text = "Static method executed in: " + (endTime-startTime) + " ms";
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{executionTimes}">
<mx:columns>
<mx:DataGridColumn headerText="Instance (ms)" dataField="instanceTime" />
<mx:DataGridColumn headerText="Static (ms)" dataField="staticTime" />
<mx:DataGridColumn headerText="Difference" dataField="difference" />
</mx:columns>
</mx:DataGrid>
<mx:VBox>
<mx:Button id="btn_main" label="Test Instance Methods" click="startTest()" />
<mx:Text id="txt_main" width="100%" fontWeight="bold" />
</mx:VBox>
</mx:Application>