Array vs. Vector vs. Linked list
♥2 |
Line 77 |
Modified 2009-10-24 17:05:17 |
MIT License
archived:2017-03-10 05:27:13
ActionScript3 source code
/**
* Copyright yonatan ( http://wonderfl.net/user/yonatan )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/zKzb
*/
package {
import flash.display.Sprite;
import flash.text.*;
import flash.utils.getTimer;
public class FlashTest extends Sprite {
public function FlashTest() {
var tf:TextField = new TextField;
tf.width = stage.stageWidth;
tf.height = stage.stageHeight;
tf.text = "Array vs. Vector vs. Linked list test";
addChild( tf );
tf.appendText( "\n" + ITERATIONS + " iterations - times in ms:" );
tf.appendText( "\nNo collection: " + testNothing() );
tf.appendText( "\nArray: " + testArray() );
tf.appendText( "\nVector: " + testVector() );
tf.appendText( "\nLinked list: " + testList() );
}
private static const ITERATIONS:int = 200000;
public function testNothing():Number {
var s:Number = getTimer();
var n:int = 0;
for( var i:int=0; i < ITERATIONS; i++ ) {
for( var j:int=0; j < 1000; j++ ) {
n++;
}
}
return getTimer() - s;
}
public function testArray():Number {
var a:Array = new Array;
// init
for( var ii:int=0; ii < 1000; ii++ ) {
a[ii] = 0;
}
// test
var s:Number = getTimer();
for( var i:int=0; i < ITERATIONS; i++ ) {
for( var j:int=0; j < 1000; j++ ) {
a[j]++;
}
}
return getTimer() - s;
}
public function testVector():Number {
var v:Vector.<int> = new Vector.<int>;
// init
for( var ii:int=0; ii < 1000; ii++ ) {
v[ii] = 0;
}
// test
var s:Number = getTimer();
for( var i:int=0; i < ITERATIONS; i++ ) {
for( var j:int=0; j < 1000; j++ ) {
v[j]++;
}
}
return getTimer() - s;
}
public function testList():Number {
var head:Node = new Node;
var current:Node;
// init
current = head;
for( var ii:int=0; ii < 999; ii++ ) {
current.next = new Node;
current = current.next;
}
// test
var s:Number = getTimer();
for( var i:int=0; i < ITERATIONS; i++ ) {
current = head;
do {
current.value++;
} while( current = current.next );
}
return getTimer() - s;
}
}
}
class Node {
public var next:Node = null;
public var value:int = 0;
}