msec > +-*/%

by 110100110101101
msec > +-*/%

♥0 | Line 268 | Modified 2016-06-13 00:43:36 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
            addChild( new Test() );
        }
    }
}

    import flash.display.Sprite;
    class Test
    extends Sprite
    {
        public function Test()
        {
            var note:LLLNote = new LLLNote(this);
            
            var i:int,iMax:int = 1000000;
            
            note.text = "count " + iMax.toString() + "\n";
            
            
            var value:Number = 0;
            var func:Function;
            func = testFunc;
            
            var numberMethod:Method = new Method( "Number", testFunc, 1 );
            var arrayMethod:Method = new Method( "ArrayToArray", testFunc, [1] );
            var numberToNumberMethod:Method = new Method( "NumberToNumber", testFunc_2, 1 );
            
            var array:Array = [];
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                func(1);
            }
            note.end(" msec: func(); \n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                testFunc(1);
            }
            note.end(" msec: testFunc(); \n");
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                testFunc_Array(array);
            }
            note.end(" msec: testFunc_Array(); \n");
            
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                numberMethod.solve();
            }
            note.end(" msec: numberMethod.solve(); \n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                arrayMethod.solve();
            }
            note.end(" msec: arrayMethod.solve(); \n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                numberToNumberMethod.solve();
            }
            note.end(" msec: numberToNumberMethod.solve(); // " + numberToNumberMethod.solve().toString() + "\n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                value = 3 + Math.PI;
            }
            note.end(" msec: value = 3 + Math.PI; //" + value.toString() + "\n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                value = 3 - Math.PI;
            }
            note.end(" msec: value = 3 - Math.PI; //" + value.toString() + "\n");
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                value = 3 * Math.PI;
            }
            note.end(" msec: value = 3 * Math.PI; //" + value.toString() + "\n");
            
            
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                value = 3 / Math.PI;
            }
            note.end(" msec: value = 3 / Math.PI; //" + value.toString() + "\n");
            
            
            
            
            note.start("");
            for( i=0;i<iMax;++i )
            {
                value = 3 % Math.PI;
            }
            note.end(" msec: value = 3 % Math.PI; //" + value.toString() + "\n");
            
        }
        public function testFunc( value:Number ):void{}
        public function testFunc_2( value:Number ):Number{ return value + 1 }
        public function testFunc_Array( value:Array ):Array{ return value }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    class Method
    {
        public var type:String = undefined;
        public var solve:Function;
        
        public var $MethodNumber:MethodNumber;
        public var $MethodNumberToArray:MethodNumberToArray;
        public var $MethodNumberToNumber:MethodNumberToNumber;
        public var $MethodNumberToString:MethodNumberToString;
        
        public var $MethodString:MethodString;
        public var $MethodStringToArray:MethodStringToArray;
        public var $MethodStringToNumber:MethodStringToNumber;
        public var $MethodStringToString:MethodStringToString;
        
        public var $MethodArray:MethodArray;
        public var $MethodArrayToArray:MethodArrayToArray;
        public var $MethodArrayToNumber:MethodArrayToNumber;
        public var $MethodArrayToString:MethodArrayToString;
        
        public function Method( type:String, ...args ):void
        {
            switch( type )
            {
                default:
                case "Function"        :                                        solve = args[0];                break;
                case "Number"        :$MethodNumber        = new MethodNumber        ( args[0], args[1] );    solve = $MethodNumber.solve;            break;//
                case "NumberToArray"    :$MethodNumberToArray    = new MethodNumberToArray    ( args[0], args[1] );    solve = $MethodNumberToArray.solve;        break;
                case "NumberToNumber"    :$MethodNumberToNumber    = new MethodNumberToNumber    ( args[0], args[1] );     solve = $MethodNumberToNumber.solve;        break;
                case "NumberToString"    :$MethodNumberToString    = new MethodNumberToString    ( args[0], args[1] );     solve = $MethodNumberToString.solve;        break;
                case "String"        :$MethodString        = new MethodString        ( args[0], args[1] );    solve = $MethodString.solve;            break;//
                case "StringToArray"    :$MethodStringToArray    = new MethodStringToArray    ( args[0], args[1] );    solve = $MethodStringToArray.solve;        break;
                case "StringToNumber"    :$MethodStringToNumber    = new MethodStringToNumber    ( args[0], args[1] );     solve = $MethodStringToNumber.solve;        break;
                case "StringToString"    :$MethodStringToString    = new MethodStringToString    ( args[0], args[1] );     solve = $MethodStringToString.solve;        break;
                case "Array"        :$MethodArray        = new MethodArray        ( args[0], args[1] );    solve = $MethodArray.solve;            break;//
                case "ArrayToArray"    :$MethodArrayToArray    = new MethodArrayToArray    ( args[0], args[1] );    solve = $MethodArrayToArray.solve;        break;
                case "ArrayToNumber"    :$MethodArrayToNumber    = new MethodArrayToNumber    ( args[0], args[1] );    solve = $MethodArrayToNumber.solve;        break;
                case "ArrayToString"    :$MethodArrayToString    = new MethodArrayToString    ( args[0], args[1] );    solve = $MethodArrayToString.solve;        break;
            }
        }
    }
    
    
    
    //
    class MethodNumber
    {
        public var func:Function;
        public var value:Number;
        public function MethodNumber( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
        public function solve():void{ func( value ) }
    }
    class MethodNumberToArray
    {
        public var func:Function;
        public var value:Number;
        public function MethodNumberToArray( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
        public function solve():Array{ return func( value ) }
    }
    class MethodNumberToNumber
    {
        public var func:Function;
        public var value:Number;
        public function MethodNumberToNumber( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
        public function solve():Number{ return func( value ) }
    }
    class MethodNumberToString
    {
        public var func:Function;
        public var value:Number;
        public function MethodNumberToString( func:Function, value:Number = NaN ):void{ this.func = func; this.value = value; }
        public function solve():String{ return func( value ) }
    }
    
    //
    class MethodString
    {
        public var func:Function;
        public var value:String;
        public function MethodString( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
        public function solve():void{ func( value ) }
    }
    class MethodStringToArray
    {
        public var func:Function;
        public var value:String;
        public function MethodStringToArray( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
        public function solve():Array{ return func( value ) }
    }
    class MethodStringToNumber
    {
        public var func:Function;
        public var value:String;
        public function MethodStringToNumber( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
        public function solve():Number{ return func( value ) }
    }
    class MethodStringToString
    {
        public var func:Function;
        public var value:String;
        public function MethodStringToString( func:Function, value:String = undefined ):void{ this.func = func; this.value = value; }
        public function solve():String{ return func( value ) }
    }
    
    //
    class MethodArray
    {
        public var func:Function;
        public var value:Array;
        public function MethodArray( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
        public function solve():void{ func( value ) }
    }
    class MethodArrayToArray
    {
        public var func:Function;
        public var value:Array;
        public function MethodArrayToArray( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
        public function solve():Array{ return func( value ) }
    }
    class MethodArrayToNumber
    {
        public var func:Function;
        public var value:Array;
        public function MethodArrayToNumber( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
        public function solve():Number{ return func( value ) }
    }
    class MethodArrayToString
    {
        public var func:Function;
        public var value:Array;
        public function MethodArrayToString( func:Function, value:Array = undefined ):void{ this.func = func; this.value = value; }
        public function solve():String{ return func( value ) }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    







    /////////////////////////////////////////////////////////////////////
    import flash.display.Sprite;
    import flash.display.DisplayObjectContainer;
    import flash.events.Event;
    import flash.text.TextFormat;
    import flash.text.TextField;
    import flash.utils.getTimer;
    /**
    表示だけなら1行で書ける形の着想元
    ! MinimalComps の com.bit101.components.Component 
    https://github.com/minimalcomps/minimalcomps/blob/master/src/com/bit101/components/Component.as
    */
    class LLLNote extends Sprite
    {
        public function LLLNote( _root:DisplayObjectContainer=null, text:String=" ", x:Number=0,y:Number=0,widthX:Number=200,widthY:Number=100 )
        {
            textFormat = new TextFormat()
            textFormat.leftMargin = 0
            textFormat.rightMargin = 0
            textFormat.align = "left"
            textFormat.font = "_等幅"     //EXAMPLE  "_等幅"  "_ゴシック"  "_明朝 "  "_typewriter"  "_serif"  "_sans"
            textFormat.size = 10
            
            textField = new TextField()
            textField.background = false;
            textField.backgroundColor = 0xFFFFFF;
            textField.border = false;
            textField.borderColor = 0x000000;
            textField.textColor = 0x000000;
            textField.autoSize = "left";
            textField.selectable = false;
            textField.text = text;
            textField.defaultTextFormat = textFormat;
            
            this.text = text;
            this.x = x;
            this.y = y;
            //textField.width = widthX;
            //textField.height = widthY;
            
            addChild( textField );
            _root.addChild( this );
            
            addEventListener( Event.ENTER_FRAME, _onEnterFrame );
            
        }
        private function _onEnterFrame( event:Event ):void { textField.text = text; }
        
        public function start( startText:String = "" ):void{
            startTime = getTimer();
            text = text + startText;
        }
        public function end( endText:String = "" ):void{
            endTime = getTimer();
            elapsedTime = endTime - startTime;
            text = text + elapsedTime.toString() + endText;
        }
        
        public var elapsedTime:Number = 0;
        public var endText:String = "";
        public var endTime:Number = 0;
        public var startText:String = "";
        public var startTime:Number = 0;
        
        
        public var text:String
        public var textFormat:TextFormat
        public var textField:TextField
    }