这感觉就像一个非常新手的问题,但我突然发现自己一无所知。我正在尝试分析一个执行大量内存副本的c应用程序,并且我可以选择减少该数量(需要重新设计)。我试图意识到它是否值得,但我不知道它会影响什么资源,或者如何监控它。
如果有人知道什么资源(以及如何在Linux中监控它),和/或引用了Agner中的某个部分或任何其他优化手册,我将非常感激。感谢。
答案 0 :(得分:1)
memcpy
使用 CPU 将内存从一个缓冲区复制到另一个缓冲区。一般来说,执行大量memcpy
的代码将受CPU限制。
话虽如此,一些底层设计可能会使它与众不同。特别是,如果您正在进行大量的内存复制,那么可能是您使用了一次内存并将其丢弃。如果是这样的话,那你就很难使用CPU的数据缓存。切换到将内存保持在原有位置的算法可能会在这方面带来巨大的好处。
至于分析,我知道valgrind有一个检查缓存效率的工具。也许其他人也是。