
On 05/07/2010 03:06 PM, DE wrote:
on 06.05.2010 at 22:48 Kenny Riddile wrote :
If you mean a language-imposed, inherent abstraction penalty, then I doubt it (certainly not 33%). You can find out for yourself though:
http://www.stepanovpapers.com/AbstractionPenaltyBenchmark.cpp
i've run the code for my everyday compiler (msvc80) and it greported no abstraction penalty
i've also tried icc11 and it showed minor abstraction penalty (mean = 1.17)
accidentaly i tried to compile my code with icc11 and -- it's a miracle! -- the test showed no abstraction penalty
i believe the implementation in fact works just as i expected so i guess if one wants speed he should get a better compiler
for curious ones here are some results:
n 2 4 8 16 32 64 128 256 512 1024 2048 msvc80 1.77 1.57 1.34 1.12 1.05 1.12 1.32 1.33 1.23 1.23 1.23 icc11 1.53 1.32 1.26 1.55 2.17 1.07 1.02 0.98 1.00 1.03 1.02
n is matrices' dimensions numbers in the latter 2 lines are ratios of runtime of C++ code to that of C code (time_cpp/time_c) 'msvc80' denotes time ratio for msvc version 'icc11' denotes the one for icc version
Hi, maybe this is a stupid question: Do you average the performance results? When I run AbstractionPenaltyBenchmark.cpp the results differ from run to run by ca. 30%, such that the one single result is not significant. I usually average them over 100-1000 runs until they have converged. Karsten