这感觉是个很新手的问题,突然发现自己一头雾水。我正在尝试分析一个执行大量内存副本的 c 应用程序,我可以选择减少该数量(需要重新设计)。我正在尝试了解它是否值得,但我不知道它会影响什么资源,也不知道如何监控它。
如果有人知道什么资源(以及如何在 Linux 中监控它),和/或引用了 Agner 或任何其他优化手册中的某个部分,我将非常感激。谢谢。
最佳答案
memcpy
使用 CPU 将内存从一个缓冲区复制到另一个缓冲区。一般来说,执行大量 memcpy
的代码将受 CPU 限制。
话虽如此,一些底层设计可能会有所不同。特别是,如果您正在进行大量内存复制,则可能是您使用了一次内存并将其丢弃。如果是这种情况,则说明您没有充分利用 CPU 的数据缓存。切换到一种将内存保留在原处的算法可能会给您带来巨大的好处。
至于分析,我知道 valgrind 有一个检查缓存效率的工具。也许其他人也是。
关于c - 当一个人执行 memcpy() 时,主要使用什么硬件资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250902/