Clang Format Tanks Performance
travisdowns.github.io
Clang Format Tanks Performance
1–10 of 156 posts
Re: Clang Format Tanks Performance
#2I'll own up to misleading-and-possibly-clickbait title, I just gave up trying to think of anything better without revealing the conclusion.
Re: Clang Format Tanks Performance
#3Author here, happy for any feedback. I'll own up to misleading-and-possibly-clickbait title, I just gave up trying to think of anything better without revealing the conclusion.
Re: Clang Format Tanks Performance
#4Re: Clang Format Tanks Performance
#5Author here, happy for any feedback. I'll own up to misleading-and-possibly-clickbait title, I just gave up trying to think of anything better without revealing the conclusion.
Re: Clang Format Tanks Performance
#6 std::transform(buf, buf + size, buf, toupper);Re: Clang Format Tanks Performance
#7Author here, happy for any feedback. I'll own up to misleading-and-possibly-clickbait title, I just gave up trying to think of anything better without revealing the conclusion.
Re: Clang Format Tanks Performance
#8Re: Clang Format Tanks Performance
#9Re: Clang Format Tanks Performance
#10A fascinating read. Is there a sane way to fix this in a future version of glibc?
That said, any exposure of implementation details, including inline bodies like this, is risky and constraining for future changes, since you bake in part of the implementation and also commit to supporting that implementation as far as you backwards compatibility strategy requires.
So it is entirely possible that the non-inlining is intentional, but then the part about include ordering mattering doesn't make sense, and if you are willing to commit for C programs, you are probably willing to commit in C++ too. You'd have to really spelunk the history of this files or ask the people responsible to be sure.
It seems more likely that that conditional compilation block is intended to avoid implementing standard library functions as macros, which is probably barred by the C++ standard (e.g., so you can use the name `std::tolower`) - and the inline bodies just got caught in the crossfire.