forked from: Comparing loop speed with incrementing and decrementing a variable

by mezumona forked from Comparing loop speed with incrementing and decrementing a variable (diff: 45)
decrease では
var i:int = nAmount;
while(i--) { ... }
とできるので、それを追加。
比較対象に while の ++i も追加するが結果は…
♥0 | Line 84 | Modified 2013-01-09 13:01:39 | MIT License
play

ActionScript3 source code

/**
 * Copyright mezumona ( http://wonderfl.net/user/mezumona )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/cSj6
 */

// forked from Fumio's Comparing loop speed with incrementing and decrementing a variable
package {
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import flash.display.Sprite;
    import flash.utils.getTimer;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    [SWF(width = "240",height = "180")]
    public class Loop_of_increment_vs_decrement extends Sprite {
        private const AMOUNT:uint = 100000000;
        private var my_txt:TextField = new TextField();
        private var label_txt:TextField = new TextField();
        private var my_fmt:TextFormat = new TextFormat();
        public function Loop_of_increment_vs_decrement() {
            // Creating a TextField for display
            createTextField();
            // Starting Test
            var timer:Timer = new Timer(2500, 4 * 3);
            timer.addEventListener(TimerEvent.TIMER, function (event:TimerEvent):void
            {
                switch (timer.currentCount % 4) {
                    case 1: decrement(); break;
                    case 2: increment(); break;
                    case 3: decrementWithWhile(); break;
                    case 0:
                        incrementWithWhile();
                        divideLog();
                }
            });
            timer.start();
        }
        private function decrement():void {
            var nAmount:int = AMOUNT - 1;
            // var nEnd:int = 0;
            var started:int = getTimer();
            // for (var i:int = nAmount; i >= 0; i--) {   /* そもそも、これだと 1 回分ループが多い(i==nAmount の分) */
            // for (var i:int = nAmount; i >= nEnd; i--) {
            for (var i:int = nAmount - 1; i >= 0; i--) {
                var temp:int = i;
            }
            xTrace("for i--", getTimer() - started);
        }
        private function decrementWithWhile():void {
            var nAmount:int = AMOUNT - 1;
            // var nEnd:int = 0;
            var started:int = getTimer();
            var i:int = nAmount;
            while (i--) {
                var temp:int = i;
            }
            xTrace("while i--", getTimer() - started);
        }
        private function increment():void {
            var nAmount:uint = AMOUNT;
            var started:int = getTimer();
            for (var i:uint = 0; i < nAmount; i++) {
                var temp:uint = i;
            }
            xTrace("for i++", getTimer() - started);
        }
        private function incrementWithWhile():void {
            var nAmount:uint = AMOUNT;
            var started:int = getTimer();
            var i:int = 0;
            while (++i < nAmount) {
                var temp:uint = i;
            }
            xTrace("while ++i", getTimer() - started);
        }
        private function createTextField():void {
            addChild(my_txt);
            addChild(label_txt);
            my_fmt.align = TextFormatAlign.RIGHT;
            my_txt.x +=  50;
            my_txt.defaultTextFormat = my_fmt;
            my_txt.autoSize = TextFieldAutoSize.RIGHT;
            label_txt.autoSize = TextFieldAutoSize.LEFT;
        }
        private function xTrace(_str:String,n:int):void {
            my_txt.appendText(n.toString() + "\n");
            label_txt.appendText(((_str + ":") + "\n"));
        }
        private function divideLog():void {
            my_txt.appendText("----\n");
            label_txt.appendText("----\n");
        }

    }
}