std::memcpy() と std::copy() のパフォーマンス比較
メモリのコピーに関しては、2 つの一般的な選択肢がありますC では std::memcpy() と std::copy() です。ただし、次のような疑問が生じます: どちらのパフォーマンスが優れていますか?
std::memcpy() と std::copy()
従来、std::memcpy () は、型情報なしで生のメモリ上で動作するため、高速であると考えられます。逆に、std::copy() は型情報を保持するため、追加のオーバーヘッドが発生する可能性があります。
パフォーマンス ベンチマーク
ただし、最近のテストでは、std:: copy() は、特定のシナリオではパフォーマンスが向上する場合があります。 SHA-2 および MD5 実装で実施された一連のテストにより、SHA-2 テストでは std::copy() が std::memcpy() よりも常にパフォーマンスが優れており、平均速度が 2.99% 向上したことが明らかになりました。
説明
この予期せぬ結果には、いくつかの要因が考えられます。まず、最新のコンパイラは std::copy() を積極的にインライン化するため、関数呼び出しの必要性や潜在的なパフォーマンスの低下を排除します。次に、 std::copy() は型情報を保持するため、コンパイラはコピーされるデータ型に基づいてメモリ アクセスを最適化できます。さらに、リンク時の最適化を有効にすると、std::copy() のパフォーマンスがさらに向上し、コンパイラがこのメソッドを使用してさらに最適化できることがわかりました。
結論
一般に信じられていることに反して、std::copy() はパフォーマンスに重大な影響を与えません。実際、特に大きなデータの塊を処理する場合、効率において std::memcpy() を上回る可能性もあります。したがって、メモリのコピーが必要なシナリオでは、利便性、汎用性、std::memcpy() と同等以上のパフォーマンスを備えた std::copy() の使用をお勧めします。
以上がstd::memcpy() と std::copy(): メモリ コピーのパフォーマンスはどちらが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。