47 ms·
Out of all ridiculous claims in that .pdf, many pointed out by others I find this especially entertaining: But do “optimizations” actually produce speedups for
by bluecalm 11y ago
Out of all ridiculous claims in that .pdf, many pointed out by others I find this especially entertaining:
But do “optimizations” actually produce speedups for benchmarks? Despite
frequent claims by compiler maintainers that they do, they rarely present numbers
to support these claims. E.g., Chris Lattner (from Clang) wrote a three-part
blog posting8 about undefined behavior, with most of the first part devoted to
“optimizations”, yet does not provide any speedup numbers. On the GCC side,
when asked for numbers, one developer presented numbers he had from some
unnamed source from IBM’s XLC compiler, not GCC; these numbers show a
speedup factor 1.24 for SPECint from assuming that signed overflow does not
happen (i.e., corresponding to the difference between -fwrapv and the default
on GCC and Clang).
Fortunately, Wang et al. [WCC+12] performed their own experiments compiling
SPECint 2006 for AMD64 with both gcc-4.7 and clang-3.1 with default
“optimizations” and with those “optimizations” disabled that they could identify,
and running the results on a on a Core i7-980. They found speed differences
on two out of the twelve SPECint benchmarks: 456.hmmer exhibits a speedup
by 1.072 (GCC) or 1.09 (Clang) from assuming that signed overflow does not
happen. For 462.libquantum there is a speedup by 1.063 (GCC) or 1.118 (Clang)
from assuming that pointers to different types don’t alias. If the other benchmarks
don’t show a speed difference, this is an overall SPECint improvement by
a factor 1.011 (GCC) or 1.017 (Clang) from “optimizations”.
I mean, the speed-up of 7.2%, 9%, 6.3%, 11.8% for specific cases is huge. It will make real time and money difference for people.
He is advocating against having that just because he thinks what signed integer overflow should do is obvious. Entitlement, ignorance, incompetence. I am not sure which one is it. It takes 1 minute to figure out that signed integer overflow is undefined and act accordingly.
- abecedarius 11y agoSee section 4.1.
- DominikD 11y agoDeveloper time is a zero sum game. If one of these optimizations bites me and I spend one day figuring out what happened, I don't spend one day doing optimization somewhere else, where a much greater speedup can be achieved. Or, to out it in your money difference terms, I could be adding value to the program somewhere else, adding or polishing features. It's a balancing game. Looking at it through the lens of % speedup, ignoring everything else is just stupid. In a perfect world we'd make decisions based on numbers. He provided his. Where are yours?