<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #B6B6B6]">
<mx:Script>
<![CDATA[
import __AS3__.vec.Vector;
[Bindable]
/**
* @private
* Are we sorting records?
*/
private var sorting
:Boolean =
false;
[Bindable]
/**
* Which iteration are we on?
*/
private var iteration
:int =
0;
/**
* @private
* How many records to include in each sort run.
*/
private const RECORD_CHUNK
:int =
10000;
/**
* @private
* Number of times to run the sorting routine.
*/
private const ITERATIONS
:int =
100;
/**
* @private
*/
/**
* @private
*/
/**
* @private
* Sort chunks of N Numbers (as Vectors) for N iterations. UI
* stalls until processing is complete.
*/
private function startSort():void
{
startTime = getTimer();
debug( "starting sort at: " + startTime.toString() + " ms");
pgb.setProgress( 0, 100 );
iteration = 0;
sorting = true;
for ( var j
:int =
0; j
<= ITERATIONS; j
++ )
{
debug("iteration: " + iteration.toString());
if ( iteration >= ITERATIONS )
{
endTime = getTimer();
debug("ending sort at: " + endTime.toString() + " ms");
debug("time: " + ( ( endTime - startTime ) / 1000 ) + " seconds");
sorting = false;
return;
}
debug("generating " + RECORD_CHUNK.toString() + " record chunk...");
var data:Vector.<Number> = new Vector.<Number>();
for( var i
:int =
0; i
< RECORD_CHUNK; i
++ )
data.
push( Math.
random() * RECORD_CHUNK
);
debug("records generated.");
debug("sorting records...");
data.sort(shuffle);
debug("sort complete.");
debug("---");
iteration++;
pgb.setProgress( iteration, ITERATIONS );
}
}
/**
* @private
* Simple record sort.
*/
{
return ( a == b ? 0 : (a < b) ? -1 : 1 );
}
/**
* @private
* Sends debug messages to text box.
*/
private function debug
( msg
:String ):void
{
dbg.text += msg + "\n";
}
]]>
</mx:Script>
<mx:Box direction="vertical" horizontalCenter="0" verticalCenter="0" horizontalAlign="center">
<mx:TextArea y="243" width="323" height="276" id="dbg" wordWrap="true" editable="false" horizontalCenter="0"/>
<mx:Button y="584" label="start sort" click="startSort();" horizontalCenter="0" enabled="{!sorting}"/>
<mx:ProgressBar id="pgb" labelPlacement="bottom" themeColor="#19CD3F"
minimum="0" visible="true" maximum="100" label="CurrentProgress 0%"
direction="right" mode="manual" width="323" y="527" horizontalCenter="0"/>
</mx:Box>
</mx:Application>