The idea comes from this article https://vgatherps.github.io/2018-09-02-nontemporal/ and the accompanying example code https://github.com/vgatherps/nontemporal_stores/blob/master/example/test.cpp
Short description of benchmark idea: A message-passing system receives messages from a source and stores a certain number of recent messages in a ring buffer. It also does some message processing, which is simulated by looking up a message in a std::map structure. Buffer writes cause std::map data to be evicted from the CPU cache, thus slowing down further processing. Non-temporal stores can be used to eliminate this problem.
Branch with performance tests (performance gain is about 50%): https://github.com/dendibakh/perf-ninja/commits/nt_stores_solution/
The idea comes from this article https://vgatherps.github.io/2018-09-02-nontemporal/ and the accompanying example code https://github.com/vgatherps/nontemporal_stores/blob/master/example/test.cpp
Short description of benchmark idea: A message-passing system receives messages from a source and stores a certain number of recent messages in a ring buffer. It also does some message processing, which is simulated by looking up a message in a std::map structure. Buffer writes cause std::map data to be evicted from the CPU cache, thus slowing down further processing. Non-temporal stores can be used to eliminate this problem.
Branch with performance tests (performance gain is about 50%): https://github.com/dendibakh/perf-ninja/commits/nt_stores_solution/