https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96942
--- Comment #7 from Dmitriy Ovdienko <dmitriy.ovdienko at gmail dot com> --- Following are CPU counters for single threaded code. Pre-allocation is enabled. Memory pool is created inside the loop. ```cpp int poolSize(int depth) { return (1 << (depth + 1)) * sizeof(Node); } int count = 0; for(int i = 0; i < 20; ++i) { MemoryPool store (poolSize(stretch_depth)); Node *c = make(stretch_depth, store); count += c->check(); store.release(); } ``` Depth = 21, Pool size = 134,217,728 Bytes | | PMR | Malloc | |-------------------|----------------|---------------| | cache-references | 60,180,483 | 60,205,187 | | cache-misses | 50,288,765 | 50,426,418 | | cycles | 7,587,314,879 | 6,076,106,356 | | instructions | 14,347,088,112 | 8,138,591,245 | | branches | 2,224,641,671 | 1,550,701,277 | | branch-misses | 8,074,211 | 7,307,996 | | faults | 655,503 | 655,485 | | migrations | 1 | 2 | | time elapsed, sec | 2.16 | 1.75 | | time (user, sec) | 1.46 | 1.01 | | time (sys, sec) | 0.69 | 0.73 | Depth = 18, Pool size = 16,777,216 Bytes | | PMR | Malloc | |-------------------|---------------|-------------| | cache-references | 8,186,788 | 3,450,642 | | cache-misses | 6,504,691 | 1,592,945 | | cycles | 992,526,559 | 472,979,689 | | instructions | 1,806,230,679 | 766,527,818 | | branches | 279,352,274 | 151,353,530 | | branch-misses | 1,072,404 | 474,648 | | faults | 82,063 | 8,314 | | migrations | 0 | 0 | | time elapsed, sec | 0.28 | 0.14 | | time (user, sec) | 0.17 | 0.13 | | time (sys, sec) | 0.11 | 0.01 | Depth = 17, Pool size: 8,388,608 Bytes | | PMR | Malloc | |-------------------|-------------|-------------| | cache-references | 1,624,992 | 1,707,061 | | cache-misses | 867,310 | 718,011 | | cycles | 312,687,116 | 255,951,365 | | instructions | 765,410,795 | 389,671,180 | | branches | 118,619,222 | 74,686,565 | | branch-misses | 272,286 | 263,916 | | faults | 4,221 | 4,219 | | migrations | 0 | 0 | | time elapsed, sec | 0.10 | 0.08 | | time (user, sec) | 0.10 | 0.07 | | time (sys, sec) | 0.00 | 0.01 |