
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 -- Pavel