Testing Math.max-min vs if statement

by Fumio
♥0 | Line 48 | Modified 2011-08-02 16:37:50 | MIT License
play

ActionScript3 source code

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

package {
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	public class Test extends Sprite {
		private var nMin:Number = 0;
		private var nMax:Number = 1;
		private var nCount:uint = 1000000;
		private var _txt:TextField;
		public function Test():void {
			var nTime:Number;
			var _str:String = "";
			_txt = new TextField();
			_txt.width = 200;
			_txt.autoSize = TextFieldAutoSize.LEFT;
			_txt.wordWrap = true;
			_txt.text = "";
			addChild(_txt);
			nTime = repeatTest(test1,-1,0.5,2);
			_str += "if: " + String(nTime) + "\n";
			nTime = repeatTest(test2,-1,0.5,2);
			_str += "Math.max-nin: " + String(nTime)+"\n";
			_txt.text = _str;
		}
		private function repeatTest(myFunction:Function, a:Number, b:Number, c:Number):Number {
			var nStart:Number = new Date().time;
			for (var i:int = 0; i < nCount; i++) {
				myFunction(a);
				myFunction(b);
				myFunction(c);
			}
			return new Date().time - nStart;
		}
		private function test1(n:Number):void {
			var nResult:Number;
			if (n>nMax) {
				nResult=nMax;
			} else if (n < nMin) {
				nResult=nMin;
			} else {
				nResult=n;
			}
			// trace(nResult);
		}
		private function test2(n:Number):void {
			var nResult:Number=Math.max(Math.min(nMax,n),nMin);
			// trace(nResult);
		}
	}
}