パフォーマンスの向上: std::copy または std::memcpy()?
プログラミング効率の観点から、一般的な議論が生じます。 std::memcpy() と std::copy() の間: 大きなブロックをコピーする場合に適しています。 data?
伝統的に、std::memcpy() は直接メモリ操作を行うため、より高速なオプションとみなされてきました。ただし、最近のテストでは、std::copy がこのパフォーマンスに匹敵するだけでなく、特定のシナリオではそれを上回ることさえあることが実証されました。
経験的証拠
ある調査では大規模な調査が行われました。 std::copy と std::memcpy() の両方を使用して文字列を繰り返しハッシュすることによってテストします。結果は、std::copy が一貫して std::memcpy() よりも平均 2.99% 優れていることを示しました。
同様のテストが MD5 ハッシュ実装に対して実行されましたが、最初は一貫性のない結果が得られました。ただし、リンク時間の最適化 (-flto) を有効にすると、std::memcpy() に対する std::copy のパフォーマンス上の利点が明らかになり、平均 0.72% の向上が見られました。
std::copy を使用する理由高速化の可能性
std::copy のパフォーマンスの向上には、いくつかの要因が考えられます。要素:
結論
経験的証拠に基づいて、std::copy が次のことを実行できることは明らかです。速度と効率の点で std::memcpy() よりも優れたパフォーマンスを提供します。 std::memcpy() の使用を必要とする特定の要件がない限り、その汎用性とタイプセーフな性質により、大きなデータ ブロックをコピーする場合に推奨される選択肢となります。
以上がstd::copy と std::memcpy: 大きなデータ ブロックのコピーでは「std::copy」の方が速いのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。