Stefan Nitschke wrote: >> >>erm, sorry, but why not use pointers? >> > >Just out of couriosity i made a benchmark test between C and C++ with >gcc3. I dont have a clue abour x86 assembler so i made a measurement. > >Here is the C code (not realy useful as real code would have a need for a >struct and a pointer operation to call the filter() function) and the >C++ code. >Both "simulate" a low pass filter and are compiled with: > gcc -O2 -march=pentium -o filter filter.xx [...] >C++ with member: >real 0m11.847s >user 0m11.850s >sys 0m0.000s > >C++ with new() and pointer: >real 0m12.337s >user 0m12.330s >sys 0m0.000s > >C: >real 0m16.673s >user 0m16.670s >sys 0m0.000s
my interpretations: c++ sans new() might be quicker because of better cache locality (the class instance is just a local stack var, while with new() it is somewhere on the heap in another memory page). i don't think reference and pointer access make the difference, after all the internal representation should be the same. granted, new() is a lot slower than a local class on the stack but your code only allocates once. have you checked whether the optimizer inlined the C function call? it looks like it didn't. tim
