
After consulting with Doug Gregor I've done some more work on signals performance. The patch I've attached removes the pImpl idiom in named_slot_map and iterator_facade. The signals regression tests still past. The performance numbers look better. Here are the speed test numbers from the current boost CVS. ===== 1000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 1000 0.0306 0.0003 10 100 0.0087 0.0001 50 20 0.0067 0.0001 100 10 0.0065 0.0001 250 4 0.0064 0.0001 500 2 0.0064 0.0001 1000 1 0.0069 0.0003 ===== 10000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 10000 0.2996 0.0027 10 1000 0.0848 0.0010 50 200 0.0669 0.0010 100 100 0.0645 0.0008 250 40 0.0666 0.0008 500 20 0.0677 0.0010 1000 10 0.0697 0.0010 5000 2 0.0679 0.0031 10000 1 0.0758 0.0034 ===== 100000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 100000 3.0874 0.0270 10 10000 0.8717 0.0098 50 2000 0.6830 0.0082 100 1000 0.6758 0.0075 250 400 0.6560 0.0075 500 200 0.6682 0.0082 1000 100 0.7176 0.0164 5000 20 0.7018 0.0445 10000 10 0.7027 0.0369 50000 2 0.7033 0.0345 100000 1 0.7202 0.0346 ===== 1000000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 1000000 29.9847 0.2791 10 100000 8.6300 0.0956 50 20000 6.8220 0.0792 100 10000 6.5083 0.0778 250 4000 6.3998 0.0744 500 2000 6.6824 0.0845 1000 1000 7.2043 0.2038 5000 200 7.0582 0.3525 10000 100 7.1081 0.3722 50000 20 7.1853 0.4216 100000 10 7.2921 0.4401 500000 2 7.8380 0.3574 And the numbers after the pImpl removal: ===== 1000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 1000 0.0025 0.0003 10 100 0.0008 0.0001 50 20 0.0006 0.0001 100 10 0.0006 0.0001 250 4 0.0006 0.0001 500 2 0.0006 0.0001 1000 1 0.0011 0.0003 ===== 10000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 10000 0.0255 0.0026 10 1000 0.0074 0.0009 50 200 0.0060 0.0008 100 100 0.0056 0.0007 250 40 0.0057 0.0007 500 20 0.0064 0.0009 1000 10 0.0107 0.0009 5000 2 0.0114 0.0031 10000 1 0.0120 0.0034 ===== 100000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 100000 0.2454 0.0260 10 10000 0.0733 0.0090 50 2000 0.0580 0.0074 100 1000 0.0599 0.0071 250 400 0.0576 0.0073 500 200 0.0626 0.0079 1000 100 0.1244 0.0152 5000 20 0.1374 0.0371 10000 10 0.1293 0.0367 50000 2 0.1182 0.0321 100000 1 0.1319 0.0341 ===== 1000000 Total Calls ===== Num Slots Calls/Slot Boost Lite --------- ---------- ------- ------- 1 1000000 2.4575 0.2629 10 100000 0.7389 0.0912 50 20000 0.6037 0.0759 100 10000 0.5682 0.0819 250 4000 0.5722 0.0721 500 2000 0.6760 0.0866 1000 1000 1.2747 0.1984 5000 200 1.3177 0.3473 10000 100 1.3181 0.3803 50000 20 1.3439 0.4049 100000 10 1.3590 0.4173 500000 2 1.2095 0.3369 All of the numbers are from my Debian 650 MHz Duron. Robert Zeh