1

我已经看到了类似这样的问题的其他答案,“快速 memcpy”,以及其他人的建议,“找出一种复制的方法”......我现在有一个有点像这样的程序,我正在尝试优化...... .它有多个线程在 1024 字节块上执行 memcpy,还使用 ​​agner fog 的 asmlib 来压缩性能,但受到内存速度的限制。

你能举例说明如何复制它可以比memcpy某些情况下更快吗?

4

2 回答 2

0

没有看到任何代码,这很难明确回答。听起来您正在将两个 512 字节数据的扇区读入一个 1024 字节的缓冲区,但您希望将额外的 64 字节附加到数据的末尾。

分配一个 1088 字节的缓冲区,将您的读取定向到缓冲区的偏移量 0 和偏移量 512,然后使用从偏移量 1024 开始的 64 字节数据更新缓冲区。

如果您希望另一个线程在没有 memcpy 的情况下拥有此数据,则将指针传递给 1088 缓冲区的开头。

希望这接近您的应用程序正在执行的操作。

于 2013-07-31T02:55:43.030 回答
0

如果您有进程在多处理器环境中处理内存,则可以检查 NUMA 架构。

我不知道 NUMA 是否会影响胎面。如果不是,我可以建议您检查您正在使用的 cpu 架构是如何工作的。

于 2013-08-20T17:36:04.370 回答