|
Boost : |
From: Stuart Dootson (stuart.dootson_at_[hidden])
Date: 2005-09-18 04:00:43
On 9/12/05, David Abrahams <dave_at_[hidden]> wrote:
>
> Last week, we were considering using the parameter library in some
> client software that demands high performance (they are doing
> massively parallel statistical analysis), so I sat with Matthias
> Troyer, an expert in high-performance C++, and developed the test
> that's now checked in at libs/parameter/test/efficiency.cpp. The test
> was carefully designed to avoid deceptive effects due to dead code
> elimination, constant propagation, and CPU architecture, and the
> process of developing it was highly instructive to me personally. We
> left lots of comments in the code so I'd be able to remember the
> issuse involved. I recommend reviewing it for anyone interested in
> how to measure abstraction penalty. One set of results is checked in
> at libs/parameter/test/timings.txt, and are reproduced below.
>
> As you can see, at least on that platform, you don't need to worry
> about Boost.Parameter slowing your code down; it might even speed your
> code up!
>
> We'd be very interested in seeing results produced with other
> compilers and/or platforms at the highest optimization levels.
>
>
<snip>
>
> --
> Dave Abrahams
> Boost Consulting
> www.boost-consulting.com
Dave - I've just run this on an Athlon 64 3500+ laptop (on AC power)
under Windows XP SP2, with Visual C++ 7.1 & 8 (beta 2) and gcc 3.4.2.
I only used the -O2 (maximize speed) option on VC++ because that's
meant to gather up the 'best' set of optimisations. I used the command
line you usd for gcc.
Stuart Dootson
---------- RESULTS ----------
Visual C++ 7.1 :
command line:
cl -O2 efficiency.cpp -EHsc -I\lib\boost\include\boost-1_33
Results:
plain time: <ignored>
named parameter time: <ignored>
plain time: 1.453
named parameter time: 1.437
plain time: 1.453
named parameter time: 1.453
Visual C++ 8.0:
command-line:
cl -O2 efficiency.cpp -EHsc -I\lib\boost\include\boost-1_33
Results:
plain time: <ignored>
named parameter time: <ignored>
plain time: 1.438
named parameter time: 1.453
plain time: 1.438
named parameter time: 1.437
Mingw gcc 3.4.2:
command-line:
g++ -c -o efficiency.o -ftemplate-depth-100 -funroll-loops -O3
-finline-functions -Wno-inline -DNDEBUG efficiency.cpp
-I\lib\boost\include\boost-1_33
g++ -o efficiency.exe efficiency.o -Wl,--strip-all Results:
plain time: <ignored>
named parameter time: <ignored>
plain time: 1.14
named parameter time: 1.422
plain time: 1.125
named parameter time: 1.406
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk