Ashley I checked your example, and it runs fine here, but the problem arises when you need to set Family:Self.FBaseX & Y for every moving car. It's one thing to do it one time on a click, but when you have to update all of the slice positions to the base, you have to use For Each, and there's no other way around it.
Your example works great for static objects, but when those objects are moving for each becomes the bottleneck. The Container approach actually performs better for many moving objects, but is a mess to work with.
Container example: C2 runtime - 200 moving objects. 45% CPU usage (60fps)
Container example: C2 runtime - 200 static objects (just rotating scene) 33% CPU usage. (60fps)
Ashley Optimized example: C3 runtime - 200 moving objects. 100% CPU usage. (15fps)
Ashley Optimized example: C3 runtime - 200 static objects (just rotating scene) 15% CPU usage. (60fps)
Maybe there's some features I'm not aware of, but I can't figure out any sensible and cheap way to move a lot of cars in this example without using containers. Disabling the for each loop, and the events no longer work.
If C3 had some feature to reduce the reliance on for each loops so you could pick or associate several objects much like how containers work, that would be the biggest performance boost in my opinion. There's so many times I got stuck and wish I knew how to create plugins and behaviours so I could get around those high level for each loops.
Don't get me wrong. What you're doing with the C3 runtime is Amazing. But in this case I think this is not really a performance issue, but rather a lack of feature issue. In those cases it's better to rely on Behaviours (and Container workarounds) because they loop instances a lot faster, but there's not behaviours for everything, or the built in ones are overly simplified, and not very flexible.
Crossing my fingers on some nice new features to get around using for each loops in events. Keep up the good work!
Edit: Updated numbers with some higher count.