連載1 高速なメモリーコピー その1
1: mov ecx, dword ptr [ebp+10h] 2: mov esi, dword ptr [ebp+0Ch] 3: mov edi, dword ptr [ebp+8] 4: mov eax, ecx 5: shr ecx, 2 6: rep movs dword ptr [edi], dword ptr [esi] 7: mov ecx, eax 8: and ecx, 3 9: rep movs byte ptr [edi], byte ptr [esi] |
これは4Byte (32bit)ずつコピーしていって、4Byte未満の端数が出たら1Byteずつコピーしています。アセンブラのコードを見る限り無駄もなく安心して使える関数ですが処理速度の点ではもう少し向上させることが出来ます。
ポイントは2つ、一つ目は今のCPUならSSE命令を使って16Byte(128bit)ずつコピーできる点、そしてもう一つはメモリーアライメントを考慮することです。
続く...
- 関連記事
trackback
コメントの投稿