On Wed, Dec 30, 2020, at 2:16 PM, Olle Härstedt wrote: > > Ok. You have a benchmark for this? I can make one otherwise, for the query > > example. > > > > It worries me a little that immutablility is pushed into the ecosystem as a > > silver bullet. Main reason functional languages are using it is because > > ownership is a newer concept, so it hasn't been adapted as much. > > Tiny benchmark here: > https://gist.github.com/olleharstedt/eaaf1dd40be541f84aa0f3954a0ea54a > > Running this on my ARM machine with PHP 7.2 gives ~1.2s for the > immutable loop, ~0.35s for the mutable one, meaning immutability is > ~3x as expensive performance wise. And this is for a SMALL object - I > suspect the performance hit will grow the bigger the class gets (more > properties to clone). Correct me if I'm wrong. :/
That's not a valid benchmark; it's comparing cloning and method invocation against just property sets. The method calls are chewing up most of the time there. Here's a more fair comparison on my laptop: https://gist.github.com/Crell/848568124e25c8c83fc4da5455063bab Which is only ~20% slower. And that's when dealing with very small numbers, so in most cases you're unlikely to notice a difference unless you really are iterating over something a million times. I also tossed some big string properties into the class, and while the total time went up a bit the ratio between the two stayed about the same. --Larry Garfield -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php