On Thursday, May 8, 2003, at 11:07 America/Denver, Beman Dawes wrote:
At 11:11 AM 5/8/2003, Darin Adler wrote:

>On Thursday, May 8, 2003, at 07:04 AM, Beman Dawes wrote:
>
>> A 2-3% timing difference probably isn't reliably repeatable in real
>> code.
>>
>> How code and data happens to land in hardware caches can easily swamp
>> out such a small difference. The version-to-version or step-to-step
>> differences in CPU's, memory, compilers, or operating systems can
>> cause that much difference in a given program. Differences need to get
>> up into the 20-30% range before they are likely to be reliably
>> repeatable across different systems.
>>
>> At least that's been my experience.
>
>That has not been my recent experience. While working on my current
>project (the Safari web browser), we have routinely made 1% speedups
>that are measurable and have an effect across multiple machines and
>compilers (same basic CPU type and operating system), and we have also
>detected 1% slowdowns when we inadvertently introduced them.


I notice the examples you give are JavaScript. Greg's example of a virtual machine is written mostly in C, IIRC. I wonder if C++ is more sensitive to compiler differences?

For example, some C++ compilers are a lot more aggressive about inlining than others. For some of the code I've timed, a change slowed results for a compiler that failed to inline it, but ran quicker for the compiler that was good at inlining.

Makes sense. Boost code stresses compilers in ways that our code doesn't -- the need to be as portable as we are means we don't even use all the features of C89, let alone C++ or C99. And of course C89 doesn't have things like inlining and virtual function dispatch that can vary so much across C++ compilers. Plus we spend a fair amount of time inspecting the output of our compilers and tweaking our C code until we get what we want, and preserving the tweaks in platform-specific macros.

The fact remains that it takes a lot of 3% tweaks to make a big
difference, so until you know you have the best possible data
structures and algorithms there isn't much point, and when there
is a point it is painstaking work at the limits of measurability.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to