Native Types

Since ActionScript offers multiple types it is possible to choose the appropriate type for a specific operation. It is sometimes not easy to decide which one should be choosen for an iteration but basically you have to choose between Number, int and uint.

Simple Iteration
First example is a simple iteration over a set of elements. In such an iteration you will usually need only integer value types. Therefore the correct version is using an int.

Wrong Version
Both i and n are typed Number which is not needed since the iteration works only with integer values.

const list: Vector.; const n: Number = list.length; for( var i: Number = 0.0; i < n; ++i ) list[ i ].dispose;

Correct Version
Marking i and n as integer data types significantly improves performance. It is also important to keep in mind that array access is optimized in the Flash Player for integer values.

const list: Vector.; const n: int = list.length; for( var i: int = 0; i < n; ++i ) list[ i ].dispose;

If you simply want to iterate over a complete list using a for-loop is a bad idea since an even better version is using a while-loop.

const list: Vector.; var i: int = list.length; while( --i > -1 ) list[ i ].dispose;

Complex Iteration
Once an iteration includes calculations it is possible that an integer value gets automatically converted to a floating-point value. Such a conversion is usually an expensive task and it might be faster to iterate over the already converted data type.

Wrong Version
In this example the call Math.sin( i ) automatically converts the int i to a Number. This is much more expensive than directly using the Number type for i.

const n: int = 4096; for( var i: int = 0; i < n; ++i ) trace( Math.sin( i ) );

Correct Version
The call to Math.sin does not have involve the conversion of i any longer. Although ++i and i < n would be faster using integer types, the conversion is so expensive that this version is faster.

const n: Number = 4096.0; for( var i: Number = 0.0; i < n; ++i ) trace( Math.sin( i ) );

Sometimes it is useful to have both options when indexing an array and performing calculations.

const n: int = 4096; const table: Vector. = new Vector.( n, true ); var i: int = 0; var j: Number = 0.0; for(i < n; ++i, ++j ) table[ i ] = Math.sin( j );