c - 当一个人执行 memcpy() 时,主要使用什么硬件资源?

标签 c linux memory optimization

这感觉是个很新手的问题,突然发现自己一头雾水。我正在尝试分析一个执行大量内存副本的 c 应用程序,我可以选择减少该数量(需要重新设计)。我正在尝试了解它是否值得,但我不知道它会影响什么资源,也不知道如何监控它。

如果有人知道什么资源(以及如何在 Linux 中监控它),和/或引用了 Agner 或任何其他优化手册中的某个部分,我将非常感激。谢谢。

最佳答案

memcpy 使用 CPU 将内存从一个缓冲区复制到另一个缓冲区。一般来说,执行大量 memcpy 的代码将受 CPU 限制。

话虽如此,一些底层设计可能会有所不同。特别是,如果您正在进行大量内存复制,则可能是您使用了一次内存并将其丢弃。如果是这种情况,则说明您没有充分利用 CPU 的数据缓存。切换到一种将内存保留在原处的算法可能会给您带来巨大的好处。

至于分析,我知道 valgrind 有一个检查缓存效率的工具。也许其他人也是。

关于c - 当一个人执行 memcpy() 时,主要使用什么硬件资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250902/

相关文章:

c - 使用未声明的标识符 'PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP'

linux - 使用 perl regexp 获取在 linux 控制台中执行的脚本的名称

node.js - 如何在 Node 中的 child.process.exec 中使用的命令中转义 URL 中的字符

c - "heap"在哪里?

ruby-on-rails - 将 oink gem 与 heroku 一起使用

multithreading - Haskell/GHC 每线程内存成本

c - 文件编号升序排列

c - 将数字作为字符串相乘(损坏的大小与 prev_size)

c - undefined reference 在 C 中调用汇编函数

c - linux信号之间是否存在优先级?