Waleed emailed an interesting question:
I was wondering about speed improvement working with somewhat complex (5,000+ point) replicators/emitters in 3d space. My current loaded i9 iMac doesn’t like them very much, even when Activity Monitor shows Motion not using much beyond a single CPU thread or two and very little GPU.
Testing the performance of specific real-time effects is pretty much impossible. There are too many variables. This is why measuring rendering speeds is much easier; we have more control over the settings.
But, I was curious. How would an Apple silicon system handle multiple particle systems? Changing the size and position of objects, as well as calculating Behaviors, is CPU-based. Changing colors, or other pixel attributes, is GPU-based.
How hard do the CPUs and GPUs work when there are thousands of elements on screen at once? Also, what is the difference between calculating effects in 2D vs. 3D?
TEST SYSTEM
My test system is a 2023 M2 Max Mac Studio with 64 GB of RAM, running macOS Ventura 13.5.2.
THE TEST
I created an eight-second, 1920 x 1080 30 fps Motion project:
Total moving elements: 2,208
Total simultaneous behaviors: 8
NOTE: This test isn’t completely accurate in that I’m not compensating for the different “life spans” of the particles. But I used the default settings for all three effects except for boosting the birthrate of falling cubes to 125/second and changing the color of the cubes. You can try this for yourself and measure your results.
THE RESULTS
The project consistently ran at 30 frames per second (top red arrow).
I measured system performance using Activity Monitor. My M2 Mac Studio has 12 CPU cores, which means that the maximum potential CPU load for this system is 1200%. The CPUs in this example ran at less than 80%.
NOTE: Motion was using 780 MB of RAM for this project.
The CPU load was spread across most of the CPUs and none were very busy.
The GPU load – indicated by the red arrow – was never more than about 40%. The first time I played this, it took one-to-two seconds to get to full speed. After that, all iterations ran at full speed.
SWITCH TO 3D
When I switched this effect to 3D and added a camera with a Sweep behavior, there was no change in CPU or GPU performance. This tells me that Motion is calculating in 3D all the time, just not displaying it.
SUMMARY
There is no doubt that we can create effects in Motion that won’t play in real time. But I was impressed that even complex effects with lots of moving elements did not tax this Apple silicon system. At all.
Give this a try for yourself and see what your system can do.
3 Responses to Apple Motion Particle Effects Performance
This is helpful Larry, thank you. I tried making a similar scene as described above on my i9 iMac and, depending on replicator shape (2d ‘rectangle’ or 3d ‘box’), get roughly 7-30fps. CPU around 250%, GPU 40%. Again, I think the 5.6.4 update back in May helped in using more hardware.
For fun, I made a simple square replicator with 5,000 points, also with a repel behavior. With that I get 3fps without light, 2fps with light. If you’d like to test that, I put it on Wetransfer (27kb): https://we.tl/t-E6pdT773RF
That said, I’ve been in situations where I’m excited to get beyond 100% CPU and 5% GPU…possibly to do with geometry shaped replicators in conjunction with camera movements. I’ll note my parameters when I run into that again.
Appreciated,
Waleed
Waleed:
Thanks for sending your project. I ran it EXACTLY as you sent it and here are my results on an M2 Max Mac Studio:
* Time to create a RAM preview: 51 seconds
* Frame rate at start: 3 fps
* Frame rate at end: 5 fps
* CPU load: ~350% all with performance cores, none fully loaded
* GPU load: ~75% with a lot of variation
Larry
Based on our results, hopefully there’s room for Motion to better leverage hardware.
Thanks for testing, Motion benchmarks aren’t easy to find these days.
Best,
Waleed