Remix.run Logo
diath 6 hours ago

Highly optimized code in hot paths is rarely readable.

dzaima 5 hours ago | parent | next [-]

Unless the highly-optimized parts are wrapped by an interface that looks similar to the non-optimized version.

In the case of a tagged object in Rust, depending on how well the compiler can wrangle through it, you might even be able to add a `.unpack()` method that returns a pretty enum from a packed value, that you can pattern-match on or whatever, and let the compiler remove all the code of unpacking unused cases.

(using that directly for the addition example would end up less efficient of course, but still most likely beneficial. It's after this when there's a potential true readability vs performance tradeoff)

locknitpicker 6 hours ago | parent | prev [-]

> Highly optimized code in hot paths is rarely readable.

...unless it's supported by the language as a first class feature. See for example C++ and RVO.

diath 6 hours ago | parent [-]

Not necessarily, in C++ you'd still drop from smart pointers to raw pointers, from virtual dispatch to switches/computed gotos, from std::function to function pointers and so on. These abstractions all come at a cost.