C4D’s ability to handle multiple objects has been a festering sore for a decade and the brains trust at Maxon are/or have been incapable of fixing it.
The sad truth is XSI is still far and away better optimised than C4D at manipulating multiple objects. ICE is highly multi-threaded but much of C4D is still single threaded but the main issue is the object management system, it doesn’t take much to cause C4D’s playback to drop to 1-2 fps or even drop into bounding box mode.
C4D’s archaic architecture is older than XSI’s and despite Maxon’s claims of updating the core there’s precious little evidence that this has had a positive impact on performance. I got so fed up with the performance I learned Houdini.
One of the other issues with C4D is that even if you cache your mograph animations or sims it really doesn’t improve viewport playback, in Houdini I can cache huge scenes and they’ll playback at the project fps rate, so it’s easy to check timings with the viewport without having to constantly export a playblast for timings.
You can’t even throw hardware at C4D as it performs as badly on a laptop as it does on a 32 core dual GPU workstation.
If you’re doing a lot of straight particle work then XParticles is a much better option and you can also do a lot of Cloner style mograph work with it. XP is actually multi-threaded and while limited by C4D’s architecture it handles much denser particle sims than C4D’s native tools.
Some workarounds to bear in mind.
You can use the Cloner to Matrix feature to speed up playback of mograph cloners. It doesn’t work with dynamics though for obvious reasons.
Keep cloner count as low as possible.
Use XParticles for high density scattering tasks.
Exporting an Alembic of your scene and loading into Houdini Apprentice will give you better playback of your scene. Begin learning Houdini…The scene caching tools alone make it easy to check animation timings.