2017-11-12 3 views
0

これは非常に初心者の質問のように感じますが、私は突然自分が無知だと感じます。私は、多くのメモリコピーを行うcアプリケーションをプロファイルしようとしています。その数を減らすオプションがあります(いくつかの再設計が必要です)。私はそれが価値があるかどうかを認識しようとしていますが、それがどのようなリソースに影響を与えるか、それをどのように監視するかはわかりません。memcpy()を実行したときに主に使用されるHWリソースは何ですか?

誰かがどのリソース(Linuxでそれを監視するか)を知っていて、Agnerやその他の最適化マニュアルのセクションへの参照がある場合は、非常に感謝します。ありがとう。

答えて

1

memcpyは、あるバッファから別のバッファにメモリをコピーするためにCPUを使用します。一般に、memcpyの多くを実行するコードはCPUに束縛されます。

これは、基本的なデザインの一部ではこれが異なることがあります。特に、メモリコピーを大量に実行している場合は、メモリを一度使用して、それを放棄している可能性があります。その場合、CPUのデータキャッシュを使い果たしてしまいます。メモリをどこに保持するアルゴリズムに切り替えることで、その前に大きな利益をもたらすかもしれません。

プロファイリングに関して、私はvalgrindがキャッシュ効率をチェックするツールを持っていることを知っています。たぶん、他の人たち。

関連する問題