memcpy より高速化: カスタムメモリコピー方法のベンチマーク

2025-08-11

プロファイリング中に、著者は`memcpy`が大きなバイナリメッセージのボトルネックになっていることを発見しました。そこで、REP MOVSBとAVX命令を使ったいくつかのカスタムメモリコピー方法(アラインメント、ストリームアラインメント、プリフェッチ付きストリームアラインメント)を実装し、ベンチマークを行いました。小~中規模のメッセージでは、ループ展開されたAVX版が最高の性能を示しました。大規模メッセージ(>1MB)では、プリフェッチ付きストリームアラインメントAVX版が最も高速でしたが、小規模メッセージでの性能は極めて悪かったです。結論として、`std::memcpy`は性能と適応性のバランスに優れており、性能が最優先でない限り、カスタムメソッドは不要です。