Memory Linux内核:复制少量数据的最快方式

Memory Linux内核:复制少量数据的最快方式,memory,linux-kernel,Memory,Linux Kernel,我正在重构内核的LZO压缩代码。 经常发生的情况是,少量数据从一个缓冲区复制到另一个缓冲区。 这种复制操作的通常长度为4、8或16字节 执行这些操作的最佳方式是什么?是memcpy还是这些小缓冲区大小的特定函数可以在支持时使用CPU操作码?执行这些操作的最佳方法是使用mempcy,因为如果大小为常量,编译器可以通过直接赋值来实现它们。memcpy非常有效,直接赋值,可能会快一点,因为编译后的代码将“更小”(malloc有一些它运行的测试,而直接赋值没有)。不过,我建议您使用memcpy,而不是直

我正在重构内核的LZO压缩代码。 经常发生的情况是,少量数据从一个缓冲区复制到另一个缓冲区。 这种复制操作的通常长度为4、8或16字节


执行这些操作的最佳方式是什么?是memcpy还是这些小缓冲区大小的特定函数可以在支持时使用CPU操作码?

执行这些操作的最佳方法是使用
mempcy
,因为如果大小为常量,编译器可以通过直接赋值来实现它们。

memcpy非常有效,直接赋值,可能会快一点,因为编译后的代码将“更小”(malloc有一些它运行的测试,而直接赋值没有)。不过,我建议您使用memcpy,而不是直接赋值,这可能会因为小端、大端以及32位/64位而中断。在您开始使用非常特定的操作码之前,您可能想让自己意识到Linux在各种各样的东西上运行,比如手表,一直到大型主机。如果你在摆弄内核,你可能需要处理所有的问题。事实上你是对的。如果编译器不支持优化,那么内核也会对memcpy进行恒定大小的优化: