- Ein Artikel, der Optimierungsmöglichkeiten für in Clang erzeugte C-Code-Schleifen untersucht.
- Die Schleife erhöht oder verringert Zahlen auf Grundlage der Zeichen in einer Zeichenkette.
- Der Autor ordnet die Schleife neu an und optimiert auf die Zeichen
p und s statt auf den Null-Terminator.
- Der Autor entfernt bedingte Verzweigungen mithilfe von Arithmetik und bedingten Verschiebungen.
- Der optimierte Code erzielt im Vergleich zum ursprünglichen Code eine deutliche Beschleunigung um das 6,73-Fache.
- Der Autor probiert außerdem andere Optimierungstechniken aus, stellt jedoch fest, dass sie den Code verlangsamen.
- Zum Benchmark-Setup gehören eine AMD Ryzen 5 5625U CPU sowie aktuelle Versionen von Clang und GCC.
- Das Fazit lautet, dass Handarbeit und Optimierung in Assembler in bestimmten Fällen erhebliche Geschwindigkeitsgewinne bringen können.
1 Kommentare
Hacker-News-Kommentar
if-Anweisungen statt einerswitch-Anweisung optimiert werden.sete/cmov-Instruktionen und kann dieselbe Geschwindigkeit wie der optimierte Assemblercode erreichen.