Angenommen, im geschwindigkeitskritischen Code haben wir ein Paar Arrays, die häufig zusammen verwendet werden, wobei die genaue Größe keine Rolle spielt, sie muss nur auf etwas Vernünftiges gesetzt werden, z.Potenzen von 2 für die Cache-Freundlichkeit vermeiden
int a[256], b[256];
Ist dies möglicherweise eine Pessimierung weil die niedrigen Adressbits gleich sind kann es für die Cache erschwert gleichzeitig beide Arrays zu behandeln? Wäre es besser, z.B. 300 statt 256?
Sie haben zu Recht den Verdacht, dass Zweierpotenzen problematisch sein könnten. Aber es gilt normalerweise nur, wenn Sie mehr als 2 Schritte haben. (vor allem, wenn Sie die L1-Cache-Assoziativität überschreiten) [Hier ein Beispiel, wo es tatsächlich problematisch wird.] (http://stackoverflow.com/questions/8547778/why-is-one-loop-so-much-slower-than -wo-loops) In diesem Beispiel gibt es 4 Arrays - die alle vom Start einer 4k-Seite auf den gleichen Offset ausgerichtet sind. – Mysticial