Bre*_*men 4 c memory-management memcpy
有两个变量:
uint32_t var32 = 0xAABBCCDD;
uint8_t var8[4] = { 0, 0, 0, 0 };
Run Code Online (Sandbox Code Playgroud)
哪个var32到var8的复制方式会更快?
for (size_t i = 0; i < sizeof(uint32_t); i++)
var8[i] = (uint8_t)(var32 >> (i * 8));
Run Code Online (Sandbox Code Playgroud)
要么
memcpy(var8, &var32, sizeof(uint32_t));
Run Code Online (Sandbox Code Playgroud)
我会很感激所有的提示.
小智 5
假设采用32位架构,则memcpy归结为单个mov(或类似)指令.因此,它是速度更快.但这也是错的.从C的角度来看,您正在调用实现定义的行为.实际上可能发生的是你的字节被错误地排序,这取决于你是在大端还是小端平台上.因此,只需使用位移解决方案而不是担心性能.
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |