Unshift→Push・RevはRevを纏めて出来てこそってこと?チェック

by ug24k8 forked from Shift Unshift おもすぎ!! (diff: 48)
bkzenさんのつぶやきを受けてテスト
♥0 | Line 124 | Modified 2010-06-29 17:22:32 | MIT License
play

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");
        }
    }
}