Hi, If I compile the attached test with and without compile optimizations with G++ 4.3.1 the non optimized version (using optimize_size<false>) is more than 10 times faster than the optimized one. I did use oprofile on the application where I use the avl set and the time is spent in the 'find' call. Can you please try to shed some light on this, I am completely stumped. Any help is appreciated! here is how I built the attached test: $ /opt2/linux/ix86/bin/g++-4.3.1 -m64 -O3 -g -I/opt2/linux/x86_64/include/boost-1_35 -DUSE_OPTIMIZATION=0 -o ./avltest-no ./avltest.cpp ./avltest.cpp:21:2: warning: #warning without optimization $ /opt2/linux/ix86/bin/g++-4.3.1 -m64 -O0 -g -I/opt2/linux/x86_64/include/boost-1_35 -DUSE_OPTIMIZATION=0 -o ./avltest-nn ./avltest.cpp ./avltest.cpp:21:2: warning: #warning without optimization $ /opt2/linux/ix86/bin/g++-4.3.1 -m64 -O3 -g -I/opt2/linux/x86_64/include/boost-1_35 -DUSE_OPTIMIZATION=1 -o ./avltest-oo ./avltest.cpp ./avltest.cpp:21:2: warning: #warning with optimization $ /opt2/linux/ix86/bin/g++-4.3.1 -m64 -O0 -g -I/opt2/linux/x86_64/include/boost-1_35 -DUSE_OPTIMIZATION=1 -o ./avltest-on ./avltest.cpp ./avltest.cpp:21:2: warning: #warning with optimization $ time ./avltest-nn sizeof(BalanceNode)=32 sizeof(BalanceSet)=40 creating file /tmp/avltest.img done region.get_address()=0x7fd715fc2000 region.get_size()=1600056 p_set=0x7fd715fc2000 p_values=0x7fd715fc2030 created/inserted 50000 entries region.get_address()=0x7fd715fc2000 region.get_size()=1600056 p_set=0x7fd715fc2000 p_values=0x7fd715fc2030 checked 50000 entries real 0m1.031s user 0m0.956s sys 0m0.008s $ time ./avltest-no sizeof(BalanceNode)=32 sizeof(BalanceSet)=40 creating file /tmp/avltest.img done region.get_address()=0x7f70b6db6000 region.get_size()=1600056 p_set=0x7f70b6db6000 p_values=0x7f70b6db6030 created/inserted 50000 entries region.get_address()=0x7f70b6db6000 region.get_size()=1600056 p_set=0x7f70b6db6000 p_values=0x7f70b6db6030 checked 50000 entries real 0m20.803s user 0m20.233s sys 0m0.028s $ time ./avltest-on sizeof(BalanceNode)=32 sizeof(BalanceSet)=32 creating file /tmp/avltest.img done region.get_address()=0x7f8f9750d000 region.get_size()=1600048 p_set=0x7f8f9750d000 p_values=0x7f8f9750d020 created/inserted 50000 entries region.get_address()=0x7f8f9750d000 region.get_size()=1600048 p_set=0x7f8f9750d000 p_values=0x7f8f9750d020 checked 50000 entries real 0m1.890s user 0m1.844s sys 0m0.012s $ time ./avltest-oo sizeof(BalanceNode)=32 sizeof(BalanceSet)=32 creating file /tmp/avltest.img done region.get_address()=0x7fb9e3b2d000 region.get_size()=1600048 p_set=0x7fb9e3b2d000 p_values=0x7fb9e3b2d020 created/inserted 50000 entries region.get_address()=0x7fb9e3b2d000 region.get_size()=1600048 p_set=0x7fb9e3b2d000 p_values=0x7fb9e3b2d020 checked 50000 entries real 0m0.248s user 0m0.144s sys 0m0.016s Lothar -- Lothar Werzinger Dipl.-Ing. Univ. framework & platform architect Tradescape Inc. - Enabling Efficient Digital Marketplaces 1754 Technology Drive, Suite 128 San Jose, CA 95110 email: lothar@tradescape.biz web: http://www.tradescape.biz