In the first BitmapData test I did, I had one BitmapData object. I had an array of different troop properties, and used draw() 100 times, translating it to draw at the coordinates of each troop in the array.

In the second BitmapData test, I had two BitmapData objects - the main one, and the buffer, and I had an array of troop properties. The buffer was 35x50 pixels, and I used draw() once to put a rasterized version of the soldier's movie clip into it. Then I used draw() 100 times to put the buffered image into the main BitmapData in the positions of each troop in the array.

The difference between them is that in the first one, I was converting the movie clip to a bitmap each of the 100 times I drew it, whereas in the second one, I only converted it to a bitmap the first time, then copied that bitmap onto the battlefield 100 times.