Ein primitives Programm initialisiert eine 1024x1024-Integer Matrix.
Mit Option s tut es das Spaltenweise, sonst Zeilenweise.
Die Analyse mit dem Tool perf Tool offenbart die Konsequenzen:
(perf stat -x: ./mattest z bzw. perf stat -x: ./mattest s)
Zeilenweise Speicherung, zeilenweise Abarbeitung | Zeilenweise Speicherung, spaltenweise Abarbeitung | Bemerkungen | |
---|---|---|---|
task-clock-msecs | 38,903359 | 260,158494 | Faktor 6.68 Zeitverlust |
context-switches | 5 | 15 | |
CPU-migrations | 0 | 0 | |
page-faults | 2288 | 2288 | |
cycles | 631083 | 2234229 | |
instructions | 10517 | 10831 | |
branches | 2107435 | 1959567 | |
branch-misses | 9297 | 10704 | |
cache-references | 437495 | 2145450 | Faktor 4.9 mehr |
cache-misses | 637172 | 2243381 | Faktor 3.52 mehr |
Wiederholung 2013 auf x86_64: Die Default-Events sind anders:
perf stat -e cache-misses,cycles,instructions ./mattest z
Bemerkungen: