*
@Lennox sagte in Funktion optimieren:
Edit: Aber noch einmal zur Erinnerung, wir sprechen nur über die Indexvariablen... Ob die Arraywerte auch, also das, worauf RDB-8 und 16(?) zeigen, gecached werden, weiß ich nicht.
Eine moderne CPU cached alles was technisch möglich ist. Daher sollte man zuerst Algorithmen auf Cache Hits optimieren, und erst danach an Assembler denken. Also frag das System wie lang eine Cache Line ist, und nutze diese Information im Algorithmus. Solange Du nur normale Register nutzt bringt Dir Assembler wahrscheinlich nichts, da der Compiler bessere Arbeit abliefern wird. Nur die Ausnutzung von SIMD ist aktuell noch schlechter, so dass sich Intrinsics für SIMD Code lohnt. Aber ich würde mir nicht die Mühe machen alles komplett in Assembler zu schreiben.
Es gibt Profiling Tools mit denen Du sehen kannst wie viele Cache Misses das Programm verursacht hat.
Nachtrag: Das einzige was wirklich CPU spezifisch ist, sind die Branch Predictor. D.h. wie verarbeitet die CPU im Voraus Code, der am wahrscheinlichsten ausgeführt werden wird. Daher lohnt es sich auch Loop Unrolling zu machen -> keine Sprünge, keine Probleme mit der Vorhersage.