問題タブ [row-major-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
119 参照

arrays - このような配列の反復処理が C で非効率なのはなぜですか?

私はこの段落がある本を読んでいました:

C の配列は、メモリの連続したチャンクと見なすことができます。より正確には、配列の最後の次元は連続部分です。これを行優先順序と呼びます。これと、キャッシュされていないデータにアクセスするときにキャッシュ フォールトが完全なキャッシュ ラインをキャッシュにロードして、後続のキャッシュ フォールトを防ぐという事実を理解すると、array[0][0] を使用して次元 10000x10000 の配列にアクセスすると、array[ がロードされる可能性がある理由がわかります。 0][1] はキャッシュ内にありますが、直後に array[1][0] にアクセスすると、2 つ目のキャッシュ フォールトが生成されます。これは、array[0][0] から sizeof(type)*10000 バイト離れているためです。同じキャッシュライン上。これが、このような反復が非効率的な理由です。

彼らがこの段落で何を説明しようとしているのか、彼らが話している「キャッシュ障害」とは何なのかを説明してもらえますか?