riscv-memcpy

在分析CPU性能时,不同指令流可能会表现不同的性能结果,以下展示了不同代码下的riscv memory copy

linux

在linux源码里面有一份memcpy的函数,它最大会顺序发射16条load和16条store。

glibc

在glibc代码里面有一份memcpy的函数,它最大会顺序发射9条load和9条store。

值得注意的是,如果直接调用memcpy,且优化选项设置为-O2,是有可能被优化掉的。

反汇编看下,它并不会调用memcpy函数,而是直接嵌入了4条load和4条store。

如果要强制调用memcpy,可以把优化选项给关了。

这样反汇编看下,就是调用memcpy了。