Environment:
using DisplayLink director
iPod Touch 2nd gen
-
cocos2d for iPhone v0.99.0-rc
cocos2d compiled in Release mode
FPS:
A particle size = 4 pixels
B particle size = 8 pixels
C particle size = 32 pixels
D particle size = 64 pixels
PointParticleSystem using a 32-bit texture (
PNG)
PointParticleSystem using a 16-bit texture (
PNG)
PointParticleSystem using a 4-bit texture (PVRTC)
QuadParticle System using a 32-bit texture (
PNG)
QuadParticle System using a 16-bit texture (
PNG)
QuadParticle System using a 4-bit texture (PVRTC)
| 1000 particles |
| | 1 | 2 | 3 | 4 | 5 | 6 | |
| A | 60 | 60 | 60 | 60 | 60 | 60 | |
| B | 60 | 60 | 60 | 60 | 60 | 60 | |
| C | ~27 | ~27 | ~45 | ~25 | ~27 | ~45 | |
| D | ~10 | ~10 | ~15 | ~10 | ~10 | ~15 | |
| 1500 particles |
| | 1 | 2 | 3 | 4 | 5 | 6 | |
| A | 60 | 60 | 60 | 60 | 60 | 60 | |
| B | 60 | 60 | 60 | 60 | 60 | 60 | |
| C | ~18 | ~20 | ~32 | ~18 | ~20 | ~32 | |
| D | ~7 | ~7 | ~10 | ~7 | ~7 | ~10 | |
| 2000 particles |
| | 1 | 2 | 3 | 4 | 5 | 6 | |
| A | 60 | 60 | 60 | 60 | 60 | 60 | |
| B | 60 | 60 | 60 | ~58 | 60 | 60 | |
| C | ~15 | ~15 | ~24 | ~15 | ~15 | ~24 | |
| D | ~5 | ~5 | ~8 | ~5 | ~5 | ~8 | |
| 2500 particles |
| | 1 | 2 | 3 | 4 | 5 | 6 | |
| A | 60 | 60 | 60 | ~59 | ~59 | 60 | |
| B | ~43 | ~45 | 60 | ~42 | ~44 | 60 | |
| C | ~12 | ~12 | ~20 | ~12 | ~12 | ~20 | |
| D | ~4 | ~4 | ~6 | ~4 | ~4 | ~6 | |
Tests B with 2000 and 2500 particles are faster than v0.9beta.
So, it seems that the particle engine is a little bit faster than previos versions.
A set randomly the position of the sprites. All the positions are inside of the screen
B set randomly the position / scale of the sprites. All the positions are inside of the screen
C set randomly the position / scale / rotation of the sprites. All the positions are inside of the screen
D All sprites are rendered outside the screen
E 80% of the sprites are positioned outside the screen. The other 20% is inside the screen
F Perform transform Scale and Rotate actions to all sprites. 100% of the sprites inside the screen
G Perform transform Scale and Rotate actions to all sprites. 20% of the sprites inside the screen
1
PNG sprite of 52×139 pixels (32-bit texture)
A
PNG atlas of 1 sprite of 52×139 pixels (32-bit texture)
A
PNG atlas of 1 sprite of 52×139 pixels (16-bit texture)
A PVRTC atlas of 1 sprite of 52×139 pixels (4-bit texture)
14
PNG sprites of 85 x 121 each (32-bit texture)
1
PNG atlas of 14 sprites of 85 x 121 each (32-bit texture)
1
PNG atlas of 14 sprites of 85 x 121 each (16-bit texture)
1 PVRTC atlas of 14 sprites of 85×121 each (4-bit texture)
64
PNG sprites of 32×32 each (32-bit Texture)
1
PNG atlas of 64 sprites of 32×32 each (32-bit Texture)
1
PNG atlas of 64 sprites of 32×32 each (16-bit Texture)
1 PVRTC atlas of 64 sprites of 32×32 each (4-bit texture)
| 250 sprites |
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| A | ~16 | ~17 | ~20 | ~22 | ~11 | ~12 | ~13 | ~16 | 60 | 60 | 60 | 60 | |
| B | ~16 | ~17 | ~20 | ~21 | ~12 | ~13 | ~15 | ~17 | 60 | 60 | 60 | 60 | |
| C | ~16 | ~17 | ~18 | ~21 | ~12 | ~12 | ~13 | ~15 | 60 | 60 | 60 | 60 | |
| D | 60 | 60 | 60 | 60 | ~60 | 60 | 60 | 60 | ~60 | 60 | 60 | 60 | |
| E | 60 | 60 | 60 | 60 | ~44 | ~48 | ~51 | 60 | ~60 | 60 | 60 | 60 | |
| F | ~22 | ~24 | ~25 | ~30 | ~17 | ~17 | ~20 | ~22 | ~48 | 60 | 60 | 60 | |
| G | ~48 | 60 | 60 | 60 | ~43 | 60 | 60 | 60 | ~52 | 60 | 60 | 60 | |
| 450 sprites |
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| A | ~9 | ~9 | ~10 | ~13 | ~6 | ~7 | ~7 | ~8 | ~44 | ~45 | ~51 | 60 | |
| B | ~9 | ~9 | ~10 | ~13 | ~6 | ~6 | ~7 | ~8 | ~42 | ~43 | ~50 | ~55 | |
| C | ~8 | ~8 | ~9 | ~11 | ~6 | ~6 | ~6 | ~8 | ~39 | ~42 | ~44 | ~51 | |
| D | ~45 | 60 | 60 | 60 | ~44 | 60 | 60 | 60 | ~51 | 60 | 60 | 60 | |
| E | ~37 | ~41 | ~45 | ~55 | ~25 | ~27 | ~32 | ~37 | ~49 | 60 | 60 | 60 | |
| F | ~13 | ~15 | ~15 | ~17 | ~10 | ~10 | ~11 | ~13 | ~29 | 60 | 60 | 60 | |
| G | ~29 | ~50 | ~51 | ~60 | ~27 | ~40 | ~45 | ~50 | ~31 | 60 | 60 | 60 | |
| 1000 sprites |
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| A | | | | | | | | | ~22 | ~24 | ~26 | ~32 | |
| B | | | | | | | | | ~21 | ~21 | ~25 | ~30 | |
| C | | | | | | | | | ~20 | ~21 | ~21 | ~25 | |
| D | | | | | | | | | ~26 | 60 | 60 | 60 | |
| E | | | | | | | | | ~25 | 60 | 60 | 60 | |
| F | | | | | | | | | ~14 | ~33 | ~35 | ~36 | |
| G | | | | | | | | | ~15 | ~36 | ~38 | ~38 | |
| 1500 sprites |
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| A | | | | | | | | | ~13 | ~17 | ~18 | ~21 | |
| B | | | | | | | | | ~13 | ~16 | ~18 | ~20 | |
| C | | | | | | | | | ~10 | ~14 | ~16 | ~18 | |
| D | | | | | | | | | ~15 | 60 | 60 | 60 | |
| E | | | | | | | | | ~14 | 60 | 60 | 60 | |
| F | | | | | | | | | ~9 | ~23 | ~24 | ~25 | |
| G | | | | | | | | | ~10 | ~26 | ~27 | ~26 | |
Pure sprite tests seems to be faster than v0.8.2 probably due to:
SpriteSheet tets seems to perform at the same speed as v0.8.2
Except for tests G10,G11,G12 with 1000 and 1500 sprites that perform slower, I would say much slower, like 20% slower.
I'm still not sure why. It seems that it depends on the device. Sometimes it performs faster than v0.8.2, and sometimes like 20% slower.