When you have a POSITIVE floating point number and want to round it down, it's better to use uint(2.33) than Math.floor(2.33). Casting positive number to uint directly is more than 17x (!!!) faster then Math.floor().
Check out the speed tests below:
private function testRoundDownPerformance():void
{
var initialTime:int;
var time:int;
var i:int;
const repCount:int = 100000000;
initialTime = getTimer();
for(i = 0; i < repCount; i++)
{
Math.floor(2.33);
}
time = getTimer() - initialTime;
log("Math.floor: " + time + "ms");
initialTime = getTimer();
for(i = 0; i < repCount; i++)
{
int(2.33);
}
time = getTimer() - initialTime;
log("int cast: " + time + "ms");
initialTime = getTimer();
for(i = 0; i < repCount; i++)
{
uint(2.33);
}
time = getTimer() - initialTime;
log("uint cast: " + time + "ms");
}
Here are results:| Math.floor | int cast | uint cast | |
|---|---|---|---|
| 2.1 Ghz Intel Core 2 Duo, Windows 7Flash Player 10.1 | 3620ms | 218ms | 203ms |
In practice there's no such a big difference between int() and uint() cast, but uint function style cast is in fact a little faster.


11:46 PM
fastas3
0 komentarze:
Post a Comment