On Mon, October 23, 2006 14:08, Vladimir Prus wrote:
Ovanes Markarian wrote:
Hello,
we have some application, where boost::shared_ptr is extensively used. After profiling with gprof I got that the shared_ptr destructor is very expensive. I used following g++ compiler flags to compile:
-Wall -ftemplate-depth-50 -fexceptions -fexpensive-optimizations -O3
It's not a good idea to use gprof to profile C++ applications. Try callgrind.
Are there may be some MACRO-defs, which can enable/disable some additional optimizations?
BTW, you did not say which platform you are on.
- Volodya
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
I used callgrind as well and it shows that the call to shared_ptr destructor is pretty expensive. I used to create some 100000 object instances and it called 370000 time the destructor. I assume the problem is in virtual function calls of the destructor which can not be inlined. Are there may be some alternatives? Like defining an own shared_counter policy? I am using RedHat with kernel: 2.6.9-22 and g++ 3.4.4 Apropos: This goes to Vladimir personally but not related to this post. Did you see my posting with pointing to a small bug in the current (1.33.1) and CVS contained version in program_options. Formating there fails sometimes. With Kind Regards, Ovanes Markarian