I was just recently going through some old episodes from Software Engineering Radio when I came across this one episode featuring Casey Muratori, where he goes through some of his thoughts around his video from February 2023, titled "‘Clean’ Code, Horrible Performance". I was actually already aware of the video by this time, but listening through the episode gave me an itch to see these concepts in my reality, experiment them by myself.
Casey’s video is interesting, but his example is framed as moving from 35 cycles/object to 24 cycles/object being a 1.5x speedup.
Another way to look at this is, it’s a 12-cycle speedup per object.
If you’re writing a shader or a physics sim this is a massive difference.
If you’re building typical business software, it isn’t; that 10,000-line monster method does crop up, and it’s a maintenance disaster.
I think extracting “clean code principles lead to a 50% cost increase” is a message that needs taking with a degree of context.
For what its worth , the cache locality of Vec<Box<Dyn trait>> is terrible in general, i feel like if youre iterating over a large array of things and applying a polymorphic function you’re making a mistake.
Cache locality isnt a problem when youre only accessing something once though.
So imo polymorphism has its place for non iterative-compute type work, ie web server handler functions and event driven systems.