[Bug libstdc++/96942] std::pmr::monotonic_buffer_resource causes CPU cache misses
dmitriy.ovdienko at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Sep 7 16:13:29 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96942
--- Comment #6 from Dmitriy Ovdienko <dmitriy.ovdienko at gmail dot com> ---
> looking at cache-misses counter does not make sense here
Well, if you compare Rust and C++, cache-misses CPU counter differs
dramatically... and page-faults too... while amount of instructions is the
same.
Page-faults btw, can significantly affect performance too. It could happen that
that is the reason.
I've put all numbers into one table for convenience:
| CPU counter | PMR | Malloc | Rust |
|------------------|----------------|----------------|----------------|
| cache-references | 45,104,136 | 40,713,525 | 29,268,774 |
| cache-misses | 24,448,475 | 14,147,648 | 12,147,041 |
| cycles | 19,904,251,283 | 14,823,743,812 | 24,539,557,585 |
| instructions | 30,462,013,065 | 22,306,442,507 | 31,784,741,964 |
| branches | 4,834,392,341 | 4,331,968,591 | 4,829,547,556 |
| faults | 234,796 | 60,227 | 68,023 |
| migrations | 2 | 6 | 8 |
> The main gotcha here is m_b_r does not allocate on construction, but rather allocates 2x of the preallocation size on first call to 'allocate'
In the two previous posts I've attached a code that does not create any thread
and allocates/deallocates memory in the loop. So, both samples have the same
behaviour.
More information about the Gcc-bugs
mailing list