定義兩種大小的結構體,分別測試「直接賦值」與 memcpy 的生成彙編代碼對比。
環境:VC++ 編譯器,Release 模式(啟用優化)。
struct ST_TEST { int nValue; BYTE nValue2[4]; }; // 總 8 bytes
mov 指令),無函數呼叫開銷。call _memcpy,包含參數壓棧、呼叫、棧平衡等額外指令。結論:小結構體直接賦值指令更少、更快。
struct ST_TEST { int nValue; BYTE bValue[4092]; }; // 總 4096 bytes
push 0x1000; call _memcpy(與手寫 memcpy 完全一致)。_memcpy。結論:大結構體編譯器自動優化為 memcpy,兩者效能相同。
b = a;),除非處理無類型記憶體塊或極特殊效能調優場景。