Vector vs. Array for BitmapData Storage
From ActionScript Performance Wiki
Contents |
Purpose
Test if a vector has a performance benefit when storing BitmapData objects.
Code
package { import flash.display.BitmapData; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class Test extends Sprite { private const BITMAP_SIZE:int = 400; private const BITMAPS_AMOUNT:int = 20; private var bmpdVector:Vector.<BitmapData> = new Vector.<BitmapData>(); private var bmpdArray:Array = []; private var bitmapData:BitmapData; public function Test() { var i:int, w:int, h:int; var bmpd:BitmapData; for (i = 0;i < BITMAPS_AMOUNT; i++) { bmpd = new BitmapData(BITMAP_SIZE, BITMAP_SIZE, false); for (w = 0;w < BITMAP_SIZE; w++) for (h = 0;h < BITMAP_SIZE; h++) bmpd.setPixel(w, h, Math.random() * 0xFFFFFF); bmpdVector[i] = bmpd; bmpdArray[i] = bmpd; } var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = new PerformanceComparison(5000000, test1, test2).start(); addChild(tf); } public function test1():void { for (var i:int = 0;i < BITMAPS_AMOUNT; i++) bitmapData = bmpdVector[i]; } public final function test2():void { for (var i:int = 0;i < BITMAPS_AMOUNT; i++) bitmapData = bmpdArray[i]; } } }
Results
Compiler version: 4.0.0.13210, Player version: MAC 10.0.32.18, Operating System: Mac OS 10.5.8
- Test 1
- 3659 ms, best
- Test 2
- 3809 ms, 04% slower
Compiler version: 3.3.04852, Player version: WIN 10.0.45.2, Operating System: Windows XP
- Test 1
- 4088 ms, best
- Test 2
- 4210 ms, 03% slower
Conclusion
There is only a marginal increase in performance when using a vector.

