|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2005-09-12 11:25:18
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.
----------------- Test #1 ----------------
Testers:
Matthias Troyer, Michael Gauckler, David Abrahams
Date:
2005-09-09
Compiler:
Cygwin g++-4.0.0
Command lines:
g++ -c -o efficiency.o -ftemplate-depth-100 -funroll-loops \
-O3 -finline-functions -Wno-inline -DNDEBUG efficiency.cpp
g++ -o efficiency.exe efficiency.o -Wl,--strip-all
efficiency && efficiency && efficiency
Machine:
Dell Inspiron 9300
Intel(R) Pentium(R) M processor 2.00GHz
Running on 230 volts AC power
Timings:
Run #1 results discarded per standard practice
Run #2
plain time: 0.75
named parameter time: 0.734
Run #3
plain time: 0.781
named parameter time: 0.766
-----------------------------------------
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk