2011-08-21 3 views
5

プログラムをキャッシュ効率的にするには、使用するデータを直線的に格納する必要がありますか?効率的なキャッシュとBLOBのプロファイリングキャッシュのヒット/ミス

動的割り当ての代わりに、線形アロケータを使用してデータをBLOBに配置します。パフォーマンスを改善するには十分ですか?キャッシュ効率をさらに向上させるためにはどうすればよいですか?私はこの質問には、特定のアレントが、私はそれを説明する方法を知らないことを知っている

...

プログラムは私のプロファイルキャッシュヒット/ミスを助けることができますか?

+2

性能向上のためには十分な/有用/必要なものは、純粋に推測するのではなく、プロファイリングによって決定する必要があります。普遍的に適用可能なレシピがあれば、それはランタイムライブラリに既に実装されているはずです。 – Vlad

+0

別の質問が追加されました...キャッシュのヒット/ミスを検出するプロファイラを知っていますので、変更があればパフォーマンスが向上するかどうかを確認できますか? –

答えて

5

あなたは、Windows用のプロファイラを探している場合は、あなたがAMD's CodeAnalystまたはVerySleepy、の両方を試すことができますこれらは無料ですが、AMDはもっと強力です(そして、Intelハードウェア上で動作しますが、ハードウェアベースのプロファイリング用のものを使用することはできません)。予測ミスおよびキャッシュ使用率を含む。それが最適化するために、何を伝えてプロファイリングは、素晴らしいですが、あなたは常にどのようを知らない、そのために、あなたは(地域とキャッシュ可能性の最適化に多く含まれる)Intel's optimization manual

3

Linuxの場合は、Valgrind(特に、cachegrindツール)を使用できます。

Windowsの場合、VS2010(2008)Professionalエディションにはプロファイラーが組み込まれていますが、 キャッシュプロファイリング機能に関する詳細はわかりません。インテル VTuneアナライザー(アンプ)もあります。どちらも商用製品ですが、評価版を30日間入手できると思いますが

助けになるかもしれないようにいくつかの他の質問:

+0

いいですが、私はWindowsを使用しています... ValgrindのWindowsの代理店はありますか? –

+0

@Tiago Costaはバマーです... – celavek

0
と組み合わせる Agner Fog's optimization manualsを見ている必要があります

Linuxでは、perf memを使用して、非常にきめ細かな方法(ミスアドレスを含む)のミスを含むメモリアクセスをdescribed hereとしてサンプリングすることができます。

関連する問題