Environment:
using DisplayLink director
iPod Touch 2nd gen
-
cocos2d for iPhone v0.99.0
cocos2d compiled in Release mode, using unroll loops optimization
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 previous 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 sprite of 52×139 pixels. 32-bit texture
1 batched sprite of 52×139 pixels. 32-bit texture
1 batched sprite of 52×139 pixels. 16-bit texture
1 batched sprite of 52×139 pixels. 4-bit texture
14 sprites of 85 x 121 each. 32-bit texture
14 batched sprites of 85 x 121 each. 32-bit texture
14 batched sprites of 85 x 121 each. 16-bit texture
14 batched sprites of 85×121 each. 4-bit texture
64 sprites of 32×32 each . 32-bit Texture
64 batched sprites of 32×32 each. 32-bit Texture
64 batched sprites of 32×32 each. 16-bit Texture
64 batched 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 | ~52 | 60 | 60 | 60 | |
| G | ~48 | 60 | 60 | 60 | ~43 | 60 | 60 | 60 | ~54 | 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 | ~53 | 60 | 60 | 60 | |
| E | ~37 | ~41 | ~45 | ~55 | ~25 | ~27 | ~32 | ~37 | ~51 | 60 | 60 | 60 | |
| F | ~13 | ~15 | ~15 | ~17 | ~10 | ~10 | ~11 | ~13 | ~32 | 60 | 60 | 60 | |
| G | ~29 | ~50 | ~51 | ~60 | ~27 | ~40 | ~45 | ~50 | ~34 | 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 | | | | | | | | | ~27 | 60 | 60 | 60 | |
| E | | | | | | | | | ~26 | 60 | 60 | 60 | |
| F | | | | | | | | | ~15 | ~33 | ~35 | ~38 | |
| G | | | | | | | | | ~16 | ~45 | ~45 | ~45 | |
| 1500 sprites |
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
| A | | | | | | | | | ~15 | ~17 | ~18 | ~21 | |
| B | | | | | | | | | ~14 | ~16 | ~18 | ~20 | |
| C | | | | | | | | | ~13 | ~14 | ~16 | ~18 | |
| D | | | | | | | | | ~18 | 60 | 60 | 60 | |
| E | | | | | | | | | ~18 | 60 | 60 | 60 | |
| F | | | | | | | | | ~10 | ~23 | ~24 | ~27 | |
| G | | | | | | | | | ~11 | ~31 | ~31 | ~32 | |
Standard sprite (non spritesheets) 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
The GPU/CPU behaves weirdly. Sometimes it performs as fast as v0.8.2, and sometimes it performs 10% or 15% slower, specially with the action tests. I'm not sure why.