| iterations | if statements | switch statements | function pointers |
|---|---|---|---|
| 1000 | 0.015 | 0.031 | 0.032 |
| 10,000 | 0.218 | 0.25 | 0.141 |
| 100,000 | 2.297 | 2.563 | 1.343 |
| 1,000,000 | 22.813 | 26.313 | 13.203 |
So I started off with the if statements:
private function testIfStatements( names:Array , iterations:int ) : int {
var x:int = 0;
for( var i:int = 0; i < iterations; i++ ){
for( var j:int = 0; j < names.length; j++ ){
if( names[j] == 'amy' ){ x = x + 1; }
else if( names[j] == 'bob' ){ x = x + 1; }
else if( names[j] == 'curly' ){ x = x + 1; }
else if( names[j] == 'dawn' ){ x = x + 1; }
else if( names[j] == 'erick' ){ x = x + 1; }
else if( names[j] == 'fred' ){ x = x + 1; }
else if( names[j] == 'george' ){ x = x + 1; }
else if( names[j] == 'harley' ){ x = x + 1; }
else if( names[j] == 'ian' ){ x = x + 1; }
else if( names[j] == 'jim' ){ x = x + 1; }
else if( names[j] == 'kim' ){ x = x + 1; }
else if( names[j] == 'liam' ){ x = x + 1; }
else if( names[j] == 'moe' ){ x = x + 1; }
else if( names[j] == 'nate' ){ x = x + 1; }
else if( names[j] == 'oliver' ){ x = x + 1; }
else if( names[j] == 'penelope' ){ x = x + 1; }
else if( names[j] == 'quinn' ){ x = x + 1; }
else if( names[j] == 'robb' ){ x = x + 1; }
else if( names[j] == 'silas' ){ x = x + 1; }
else if( names[j] == 'tim' ){ x = x + 1; }
else if( names[j] == 'ulysses' ){ x = x + 1; }
else if( names[j] == 'victor' ){ x = x + 1; }
else if( names[j] == 'waldo' ){ x = x + 1; }
else if( names[j] == 'xavier' ){ x = x + 1; }
else if( names[j] == 'yolanda' ){ x = x + 1; }
else if( names[j] == 'zidian' ){ x = x + 1; }
}
}
return x;
}
Next I looked at the switch statements.
private function testSwitchStatements( names:Array , iterations:int ) : int {
var x:int = 0;
for( var i:int = 0; i < iterations; i++ ){
for( var j:int = 0; j < names.length; j++ ){
switch(names[j]){
case 'amy':
x = x + 1;
break;
case 'bob':
x = x + 1;
break;
case 'curly' :
x = x + 1;
break;
case 'dawn' :
x = x + 1;
break;
case 'erick' :
x = x + 1;
break;
case 'fred' :
x = x + 1;
break;
case 'george' :
x = x + 1;
break;
case 'harley' :
x = x + 1;
break;
case 'ian' :
x = x + 1;
break;
case 'jim' :
x = x + 1;
break;
case 'kim' :
x = x + 1;
break;
case 'liam' :
x = x + 1;
break;
case 'moe' :
x = x + 1;
break;
case 'nate' :
x = x + 1;
break;
case 'oliver' :
x = x + 1;
break;
case 'penelope' :
x = x + 1;
break;
case 'quinn' :
x = x + 1;
break;
case 'robb' :
x = x + 1;
break;
case 'silas' :
x = x + 1;
break;
case 'tim' :
x = x + 1;
break;
case 'ulysses' :
x = x + 1;
break;
case 'victor':
x = x + 1;
break;
case 'waldo' :
x = x + 1;
break;
case 'xavier' :
x = x + 1;
break;
case 'yolanda' :
x = x + 1;
break;
case 'zidian' :
x = x + 1;
break;
default :
}
}
}
return x;
}
Finally I created a function for the object of function pointers.
private function testFunctionPtrs( names:Array , iterations:int ) : int {
var functions:Object = new Object();
functions['amy'] = function a( y:int ) : int { return (y+1); };
functions['bob'] = function b( y:int ) : int { return (y+1); };
functions['curly'] = function c( y:int ) : int { return (y+1); };
functions['dawn'] = function d( y:int ) : int { return (y+1); };
functions['erick'] = function e( y:int ) : int { return (y+1); };
functions['fred'] = function f( y:int ) : int { return (y+1); };
functions['george'] = function g( y:int ) : int { return (y+1); };
functions['harley'] = function h( y:int ) : int { return (y+1); };
functions['ian'] = function i( y:int ) : int { return (y+1); };
functions['jim'] = function j( y:int ) : int { return (y+1); };
functions['kim'] = function k( y:int ) : int { return (y+1); };
functions['liam'] = function l( y:int ) : int { return (y+1); };
functions['moe'] = function m( y:int ) : int { return (y+1); };
functions['nate'] = function n( y:int ) : int { return (y+1); };
functions['oliver'] = function o( y:int ) : int { return (y+1); };
functions['penelope'] = function p( y:int ) : int { return (y+1); };
functions['quinn'] = function q( y:int ) : int { return (y+1); };
functions['robb'] = function r( y:int ) : int { return (y+1); };
functions['silas'] = function s( y:int ) : int { return (y+1); };
functions['tim'] = function t( y:int ) : int { return (y+1); };
functions['ulysses'] = function u( y:int ) : int { return (y+1); };
functions['victor'] = function v( y:int ) : int { return (y+1); };
functions['waldo'] = function w( y:int ) : int { return (y+1); };
functions['xavier'] = function X( y:int ) : int { return (y+1); };
functions['yolanda'] = function Y( y:int ) : int { return (y+1); };
functions['zidian'] = function Z( y:int ) : int { return (y+1); };
var x:int = 0;
for( var i:int = 0; i < iterations; i++ ){
for( var j:int = 0; j < names.length; j++ ){
x = functions[names[j]](x);
}
}
return x;
}