[最適化 Tips] 変数名の長さによる処理速度の違い muta244 forked:9favorite:10lines:99license : MIT License modified : 2009-05-17 17:20:47 Embed Tweet package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; public class Main extends Sprite { static private const _NUM_TIMES:uint = 1000000; private var _a:String = "test"; private var _abcdefghijklmnopqrstuvwsyzabcdefghijklmnopqrst:String = "test"; private function _init():void { _debug( "各テスト " + _NUM_TIMES + " 回処理させた計算結果 [単位 : ミリ秒]\n" + "(誤差は多少生じます)\n" ); _measure("ループのみ", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { } }); _measure("変数名が短いプロパティ参照", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { _a; } }); _measure("変数名が長いプロパティ参照", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { _abcdefghijklmnopqrstuvwsyzabcdefghijklmnopqrst; } }); _measure("変数名が短いプロパティのハッシュ参照", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { this["_a"]; } }); _measure("変数名が長いプロパティのハッシュ参照", function ():void { for (var i:uint = 0; i < _NUM_TIMES; i++) { this["_abcdefghijklmnopqrstuvwsyzabcdefghijklmnopqrst"]; } }); _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; 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 _azzip xxxYukihirox.. alumican_net.. cpu_t : 最適化 PROT830 : 最適化 dealforest : optimization onedayitwill.. : performancetipsworkarounds umhr : 最適化結論:かわらない clockmaker : 結論:かわらない ish_xxxx : performance optimization performance tips workarounds 最適化 title Math.log getTimer mouseChildren apply drawRoundRect buttonMode htmlText defaultTextFormat appendText TextField MouseEvent.CLICK endFill font addEventListener beginFill height width String lineStyle sort new page view favorite forked pv136 for文の書き方でパフォーマンス変わるかテスト miniapp forked:0 favorite:0lines:115 (diff:98) tag: performance pv558 [最適化 Tips] 単位行列 sekiryou forked:1 favorite:1lines:99 (diff:22) tag: 最適化 pv1635 三角関数のテーブル引きによる高速化 cpu_t forked:1 favorite:0lines:133 (diff:54) pv323 forked from: [最適化 Tips] 変数名の長さ.. nondelion forked:0 favorite:0lines:159 (diff:74) pv4173 [最適化 Tips] SpriteとMovieClipってそ.. clockmaker forked:3 favorite:3lines:94 (diff:40) tag: movieclip sprite tips pv596 forked from: [最適化 Tips] Faster.. onedayitwillmake forked:1 favorite:0lines:124 (diff:53) pv5349 [最適化 Tips] if ... else と switc.. muta244 forked:2 favorite:9lines:126 (diff:41) tag: else if performance proformance switch tips vs workarounds 最適化 pv659 forked from: [実験] 変数名の長さによって処理.. publicroots forked:0 favorite:0lines:64 (diff:1) 1 2NEXT