Unshift→Push・RevはRevを纏めて出来てこそってこと?チェック
forked from Shift Unshift おもすぎ!! (diff: 48)
bkzenさんのつぶやきを受けてテスト
ActionScript3 source code
/**
* Copyright ug24k8 ( http://wonderfl.net/user/ug24k8 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/hfWb
*/
// forked from keno42's Shift Unshift おもすぎ!!
// bkzenさんのつぶやきを受けてテスト
// forked from beinteractive's forked from: 関数のオーバーヘッドありすぎない?
// forked from keno42's 関数のオーバーヘッドありすぎない?
package {
import flash.display.Sprite;
import flash.text.*;
import flash.utils.*;
public class FlashTest extends Sprite {
private static const COUNT:uint = 20000;
private var array:Array = [];
private var tf:TextField = new TextField();
public function FlashTest() {
// write as3 code here..
addChild(tf);
tf.autoSize = "left";
testReverse();
testPush();
testReverse();
testPush();
testReverse();
testPush();
testReverse();
testPop();
testPop();
testUnshift();
testUnshift();
testShift();
testShift();
testOriginalUnshift();
testOriginalUnshift();
testOriginalShift();
testOriginalShift();
testOriginalUnshiftReverseLoop();
testOriginalUnshiftReverseLoop();
testOriginalShiftReverseLoop();
testOriginalShiftReverseLoop();
}
private function testPush():void
{
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.push(i);
}
tf.appendText("push(配列長" + (array.length-COUNT) +"->"+ array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testPop():void
{
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.pop();
}
tf.appendText("pop(配列長" + (array.length+COUNT) +"->"+ array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testReverse():void
{
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < (COUNT/100); i++ ){
array.reverse();
}
tf.appendText("reverse(配列長" + array.length+ "を"+(COUNT/100)+"回): " + String(getTimer()-time) + "\n");
}
private function testShift():void
{
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.shift();
}
tf.appendText("shift(配列長"+ (array.length+COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testUnshift():void
{
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.unshift(1);
}
tf.appendText("unshift(配列長"+ (array.length-COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testOriginalUnshift():void
{
// Reverse + (Push × COUNT) + Reverse
var time:uint = getTimer();
var i:Number, j:Number;
array.reverse();
for( i=0; i < COUNT; i++ ){
array.push(i);
}
array.reverse();
tf.appendText("自作unshift(配列長"+ (array.length-COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testOriginalShift():void
{
// Reverse + (Pop × COUNT) + Reverse
var time:uint = getTimer();
var i:Number, j:Number;
array.reverse();
for( i=0; i < COUNT; i++ ){
array.pop();
}
array.reverse();
tf.appendText("自作shift(配列長"+ (array.length-COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testOriginalUnshiftReverseLoop():void
{
// (Reverse + Push + Reverse) × COUNT
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.reverse();
array.push(i);
array.reverse();
}
tf.appendText("自作unshift[1回ずつRev](配列長"+ (array.length-COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
private function testOriginalShiftReverseLoop():void
{
// (Reverse + Pop + Reverse) × COUNT
var time:uint = getTimer();
var i:Number, j:Number;
for( i=0; i < COUNT; i++ ){
array.reverse();
array.pop();
array.reverse();
}
tf.appendText("自作shift[1回ずつRev](配列長"+ (array.length-COUNT) +"->" + array.length+ "): " + String(getTimer()-time) + "\n");
}
}
}