Forked from: muta244's [最適化 Tips] サイン・コサインの取得方法による処理速度の違い diff:46 [最適化 Tips] Number, int, uint の計算による処理速度の違い muta244 forked:4favorite:4lines:115license : MIT License modified : 2009-07-22 16:52:35 Embed Tweet package { import flash.display.*; import flash.geom.*; import flash.events.*; import flash.text.*; import flash.utils.*; public class Main extends Sprite { static private const _NUM_TIMES:int = 1000000; private function _init():void { _debug( "各テスト " + _NUM_TIMES + " 回処理させた計算結果 [単位 : ミリ秒]\n" + "(誤差は多少生じます)\n" ); var n1:Number = 1.0; var n2:int = 1; var n3:uint = 1; _measure("ループのみ", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { } }); _measure("Number 同士の演算", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n1 = n1 + n1 - n1; } }); _measure("int 同士の演算", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n2 = n2 + n2 - n2; } }); _measure("uint 同士の演算", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n3 = n3 + n3 - n3; } }); _measure("int 同士の演算 (途中でキャスト)", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n2 = int(n2 + n2) - n2; } }); _measure("uint 同士の演算 (途中でキャスト)", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n3 = int(n3 + n3) - n3; } }); _measure("全てを掛け合わせて演算", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { n1 = n1 + n2 - n3; } }); _debug("\n結果については言及しませんので, 各自ご判断ください."); } private var _field:TextField; private var _time:uint; public function Main():void { _setup(); _init(); } private function _measure(title:String, func:Function, ...params):void { _time = getTimer(); func.apply(null, params); _time = getTimer() - _time; _debug("[ " + title + " ] --> " + _time + " ms"); } private function _debug(log:String):void { _field.appendText(log + "\n"); } private function _setup():void { _field = new TextField(); _field.width = stage.stageWidth - 40; _field.height = stage.stageHeight - 60; _field.x = 20; _field.y = 60; _field.multiline = true; _field.wordWrap = true; var format:TextFormat = _field.defaultTextFormat; format.font = "_sans"; _field.defaultTextFormat = format; addChild(_field); var button:Sprite = new Sprite(); button.graphics.lineStyle(1, 0xBBBBBB); button.graphics.beginFill(0xEEEEEE); button.graphics.drawRoundRect(0, 0, 100, 20, 5, 5); button.graphics.endFill(); addChild(button); button.x = 20; button.y = 20; button.mouseChildren = false; button.buttonMode = true; var field:TextField = new TextField(); field.width = 100; field.height = 20; field.htmlText = "<p align='center'><font face='_sans'>再計算</span></p>"; button.addChild(field); button.addEventListener(MouseEvent.CLICK, function ():void { _field.text = ""; _init(); }); } } } Code Fullscreen Preview Fullscreen hacker_u47p9.. ibu4gin alumican_net.. : 速度実験 tail_y : 速度実験なにこれこわい performance tips 最適化 速度実験 title Math.log getTimer mouseChildren drawRoundRect wordWrap apply buttonMode defaultTextFormat htmlText appendText TextField MouseEvent.CLICK multiline font addEventListener endFill beginFill height width sort new page view favorite forked pv48 forked from: [最適化 Tips] Number.. rakynet forked:0 favorite:0lines:115 (diff:2) pv59 forked from: [最適化 Tips] Number.. webmaster forked:0 favorite:0lines:115 (diff:2) pv1524 [最適化 Tips] Array の indexOf による.. muta244 forked:1 favorite:4lines:116 (diff:31) tag: performance stundy tips 最適化 速度実験 pv669 forked from: [最適化 Tips] Number.. tail_y forked:3 favorite:1lines:97 (diff:7)