有一个特定的循环缓冲区我希望在缓存中保持热,但是它可以在很长一段时间内不被使用。这会导致缓存未命中。
我有一个空闲循环可以负责保持位置热,但我看不到只使用公共(public)接口(interface)而不实际插入/删除项目的方法。
是否有任何操作,使用公共(public)接口(interface),当循环缓冲区为空时,将插入点保持在缓存中热?
最佳答案
您可能希望通过完全执行它并尽可能短地停止提交它的影响来定期预热您的完整快速路径。
如果您可以获得指向容器前端的指针,您可以在其上使用 __builtin_prefetch
将其放入缓存。或者,push
和 pop
一个元素。
关于c++ - 有没有办法让空的 boost 循环缓冲区的前端在缓存中保持热?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153613/