我看到过类似“fast memcpy”这样的问题的其他答案,还有其他人建议“找出一种不复制的方法”...我有一个有点像这样的程序现在我正在尝试优化...它有多个线程在 1024 字节 block 上执行 memcpy,还使用 agner fog 的 asmlib 来压缩性能,但受到内存速度的限制。
您能否举例说明在某些情况下如何不复制它比 memcpy
更快?
最佳答案
如果没有看到任何代码,这很难明确回答。听起来您正在将两个 512 字节数据扇区读入 1024 字节缓冲区,但您希望将额外的 64 字节附加到数据末尾。
分配一个 1088 字节的缓冲区,将您的读取定向到缓冲区的偏移量 0 和偏移量 512,然后用从偏移量 1024 开始的 64 字节数据更新缓冲区。
如果您希望另一个线程在没有 memcpy 的情况下拥有此数据,则将指针传递给 1088 缓冲区的开头。
希望这接近于您的应用程序正在执行的操作。
关于c - 内存到内存传输优化,如何不memcpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942008/