Passing Different Object Types
From ActionScript Performance Wiki
Contents |
Purpose
To see what the decrease in performance is, when an object looses its type while being passed to a function.
Code
package { import flash.display.Sprite; public class Test extends Sprite { private const TEXT : String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private const NUMBER : Number = 1234567890; public function Test() { trace(new PerformanceComparison(1000000, test1, test2, test3, test4).start()); } private function test1():void { test1helper(new ValueObject); } private function test2():void { test2helper(new ValueObject); } private function test3():void { test3helper(new ValueObject); } private function test4():void { test4helper(new ValueObject); } /** * Apply directly */ private function test1helper(obj : ValueObject) : void { obj.text = TEXT; obj.number = NUMBER; } /** * Apply with Interface */ private function test2helper(obj : IValueObject) : void { obj.text = TEXT; obj.number = NUMBER; } /** * Apply with TypeCast */ private function test3helper(obj : Object) : void { (obj as ValueObject).text = TEXT; (obj as ValueObject).number = NUMBER; } /** * Apply with TypeCast to Interface */ private function test4helper(obj : Object) : void { (obj as IValueObject).text = TEXT; (obj as IValueObject).number = NUMBER; } } } internal interface IValueObject { function get number() : Number; function set number(n:Number) : void; function get text() : String; function set text(str:String) : void; } internal class ValueObject implements IValueObject { private var _number : Number; private var _text : String; public function get number() : Number { return _number; } public function get text() : String { return _text; } public function set number(n : Number) : void { _number = n; } public function set text(str : String) : void { _text = str; } }
Results
Compiler version: 3.3.0.485, Player version: MAC 10.0.2.54, Operating System: Mac OS 10.5.8
- Test 1
- 12227 ms, best
- Test 2
- 12334 ms, 01% slower
- Test 3
- 12378 ms, 01% slower
- Test 4
- 12495 ms, 02% slower
Compiler version: 3.3.04852, Player version: WIN 10.0.45.2, Operating System: Windows XP
- Test 1
- 1874 ms, 01% slower
- Test 2
- 1860 ms, best
- Test 3
- 1877 ms, 01% slower
- Test 4
- 1894 ms, 02% slower
Conclusion
Even at 1000000 iterations, the performance gain of keeping the type is minimal.

