内存到内存传输优化,如何不进行memcpy?

时间:2013-07-30 08:31:37

标签: c performance memory optimization memcpy

我已经看到了这样一个问题的其他答案,"快速记忆",以及其他人的建议,"找到一种方法复制" ...我有一个类似于此的程序,我正在尝试优化...它有多个线程在1024字节块上执行memcpy,也使用agner fog的asmlib来挤压性能但受到限制记忆的速度。

您能举例说明 如何复制,在某些情况下它可能比memcpy更快?

2 个答案:

答案 0 :(得分:0)

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

分配一个1088字节的缓冲区,将读取指向缓冲区的偏移量0和偏移量512,然后用偏移量为1024的64字节数据更新缓冲区。

如果你想让另一个线程拥有没有memcpy的数据,那么将指针传递给1088缓冲区的开头。

希望这接近你的应用程序正在做什么。

答案 1 :(得分:0)

如果您在多处理器环境中有内存处理,则可以检查NUMA体系结构。

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