So now they realized the same thing the linux kernel programmers realized earlier: building _really_ efficient things requires a more precise stance towards 'best practice'.
While data encapsulation is neat for datastructures which might be accessed by fools who might break something, it is a performance killer and utterly uneccessary if no fool ever touches the datastructure.
While gotos might be old and too powerful for most people, they do have the ability to reduce code duplication in C and even have use cases where a goto is simpler than no goto.
That's not the lesson I take away here. Yes, breaking encapsulation is occasionally necessary. Yes, abstraction sometimes has a performance penalty (but sometimes it doesn't).
Mostly I've learned that we had a mountain of technical debt we have to remove before we were in a good position to produce huge optimizations. What Andrew didn't write is that despite losing some speed with recent changes after 1.4, we've added a lot of optimizations. We'll probably lose a bit of ground after 1.7, but we're in a much better position to gain it back and more after 1.8.
2 comments
[ 2.7 ms ] story [ 16.8 ms ] threadWhile data encapsulation is neat for datastructures which might be accessed by fools who might break something, it is a performance killer and utterly uneccessary if no fool ever touches the datastructure.
While gotos might be old and too powerful for most people, they do have the ability to reduce code duplication in C and even have use cases where a goto is simpler than no goto.
Mostly I've learned that we had a mountain of technical debt we have to remove before we were in a good position to produce huge optimizations. What Andrew didn't write is that despite losing some speed with recent changes after 1.4, we've added a lot of optimizations. We'll probably lose a bit of ground after 1.7, but we're in a much better position to gain it back and more after 1.8.