私たちはクラスA
を持っていて、A
オブジェクトへのポインタの配列を持っています。その配列の各要素をループすると、各オブジェクトがメモリ内の別の場所にあり、それらが整列していないためにキャッシュミスが発生する可能性がありますそれはオブジェクトへのポインタの配列であり、実際のオブジェクトの配列ではないため、同じブロック内で次々に表示されます。カスタムブロックアロケータを使用してポインタを配列に配置しても問題が解決されない問題を解決しますか?
カスタムアロケータを作成してこれらのオブジェクトを割り当て、ポインタを配列に配置することで、この問題を解決したいと考えています。アロケータは、すべてのオブジェクトがメモリ内で常に隣にあり、ブロック内で整列していることを保証します。それは、配列を反復処理するときに現金を失う問題を解決しますか?
詳細:私は、カスタムアロケータを作成します
、このアロケータは、私は、オブジェクトをALLOCとき、後に、このアロケータは、そのブロック内の空き領域を選択します、すべてのオブジェクトを処理するのに十分な大きさのメモリのブロックをALLOCます毎回、すべてのオブジェクトを別のオブジェクトの隣に置くようにしようとすると、それらは一度にキャッシュメモリにロードされ、キャッシュミスは発生しません。
何ですか?私はあなたの提案された解決策を意味します。 – gsamaras
私はカスタムアロケータを作成します。このアロケータはすべてのオブジェクトを処理するのに十分な大きさのメモリブロックを割り当てます。後でオブジェクトを割り当てると、このアロケータはそのブロック内の空き領域を選択して、別の方法に、彼らはすぐにキャッシュメモリにロードされ、キャッシュミスを少なくする方法 –