文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>[Bindable]? No, thanks

[Bindable]? No, thanks

时间:2009-08-21  来源:panzt

From:http://www.sephiroth.it/weblog/archives/2009/07/bindable_no_thanks.php

Working on huge projects sometimes let you take long optimization sessions.
During one of these sessions I was trying to find a way to optimize a bunch of code which was taking too long time to process.
The big big bottleneck I discovered, and I didn’t know before (my fault), was the [Bindable] attribute of one of the classes included in the process.
This process was creating something like 1 million instances of this class during its life. After a first optimization in which I created an object pooling, thus reducing the total execution time from 16 seconds to 13, I found this incredible trick which reduced the total execution time to 1 second!!

Let’s say you have a class like this:

package it.sepy.test { [Bindable] public class RGB { private var _red: int; private var _green: int; private var _blue: int; public function RGB() { } public function get red():int { return _red; } public function set red(v:int):void { _red = v; } public function get green():int { return _green; } public function set green(v:int):void { _green = v; } public function get blue():int { return _blue; } public function set blue(v:int):void { _blue = v; } } } 



and a simple script which create 100000 instances of this class (my script wasn’t like this, but for simplicity I’m doing this example):

package { import flash.display.Sprite; import flash.system.System; import it.sepy.test.Pool; import it.sepy.test.RGB; public class test extends Sprite { public function test() { startTest(); } private function startTest(): void { var t1: Number = new Date().getTime(); for( var i: int = 0; i < 100000; i++ ) { var rgb: RGB = new RGB(); rgb.red = i%255; rgb.green = i%255; rgb.blue = i%255; } var t2: Number = new Date().getTime(); trace('total execution time:', (t2-t1), 'ms'); trace('memory usage:', System.totalMemory/1024, 'kb' ); } } } 



now launch the script and in the output I have this result

total execution time: 2381 ms memory usage: 5924 kb 



NOW. Remove the [Bindable] property from the RGB class and launch again the test script. See at the output console and the new results are:

total execution time: 236 ms memory usage: 2720 kb 



So, I know that bindable were not created for this kind of jobs, but if using it make 10 time slower my scripts, then I don’t see any valid reason to use it anywhere.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载