4

メモリ キャッシュがあることを知っているので、メモリ内の多くの異なるポイントからの値を使用すると、キャッシュ ミスが発生し、パフォーマンスが低下します。プログラムが実行されると、L1キャッシュに似た小さなブロックで実際にメモリからCPUにロードされますか? おそらく、メモリ内を頻繁にジャンプすると、このキャッシュでミスが発生し、パフォーマンスが低下するためです。だから私はそれが2つの質問だと思います.そのような「実行キャッシュ」はありますか?そして頻繁にジャンプするとパフォーマンスが低下しますか.

PSパフォーマンスとキャッシュ以外に、これに適したタグが何であるかわかりません。

PPS 状況の例としては、多数のネストされたifおよびが含まれるタイトなループelseで、各 if および else ネストの最終結果が少量のコードにすぎない場合があります。

4

1 に答える 1

3

はい。このキャッシュは命令キャッシュと呼ばれます。それを使い果たすと、パフォーマンスに深刻な影響を与える可能性があります。これが、関数のインライン化が常に有益であるとは限らない理由です。インライン化された関数は高速になりますが、肥大化したコード サイズによりホット パスが I キャッシュから追い出される可能性があります。

Linux カーネル開発者のメーリング リストには、このトピックに関する興味深い議論があります。

于 2012-04-19T16:49:54.320 に答える