"Dein Code ist schnell - wenn du Glück hast": Warum deine Mikro-Benchmarks lügen

Handwerk Jul 11, 2026 at 17:146Zu Lesezeichen hinzufügen

"Dein Code ist schnell - wenn du Glück hast": Warum deine Mikro-Benchmarks lügen
Illustration : Léa Fontaine

Ein viraler Beitrag hinterfragt die Zuverlässigkeit von Mikrobenchmarks: Der gleiche Code kann je nach Reihenfolge der Symbole, der Position im Speicher oder dem Benutzernamen um 30 % variieren. Was das für das Crafting bedeutet.

In einfachen Worten

Ein Entwickler hat gezeigt, dass ein und derselbe Code je nach Parametern, die nichts mit dem Algorithmus zu tun haben, 30 % schneller oder langsamer sein kann: Reihenfolge der Symbole beim Linken, Größe der Umgebungsvariablen, Speicherausrichtung. Mit anderen Worten: Ein großer Teil dessen, was wir in Mikrosekunden messen, hängt vom Glück ab.

Die Geschichte

Der Autor, auf tiki.li/blog/lucky_code, greift einen bereits gut bekannten Thread bei den Compilern (Emery Berger, Stabilizer, ASPLOS 2013) auf und bringt ihn auf den neuesten Stand: Er führt denselben Binärcode aus, ohne ihn zu ändern, und variiert periphere Parameter (Name des Build-Verzeichnisses, Reihenfolge des Linkens der Objektdateien, Größe von $PATH). Die Laufzeiten ändern sich signifikant, bis zu über 30 % bei Mikrobenchmarks. Der Grund: Die Ausrichtung der Anweisungen in den L1i/uop-Caches, der x86-Decoder und die Branch-Vorhersage, die alle auf die virtuelle Adresse des Codes ansprechen.

Der Punkt, der jeden stören sollte: In der realen Welt vergleichen wir einen PR vor/nach, notieren eine Verbesserung von 8 %, und mergen. Wie viel davon ist echtes Signal? Wie viel ist Ausrichtungsrauschen?

Under the hood

  • Stabilizer (Berger 2013) randomisiert die Zuweisung von Stack, Heap und Code bei jedem Lauf - die Messungen werden zu Verteilungen, nicht zu Punkten.
  • Hyperfine + -warmup + -runs 50 löst NICHT das Problem: Es mittelt, aber die Ausrichtung bleibt bei jedem Lauf desselben Binärcodes gleich.
  • Die gute Praxis: Mit zufälligen Offsets neu kompilieren (Stabilizer oder manuelles Padding) ODER mit -randomize-address ausführen und einen IC 95 % melden, nicht einen Durchschnitt.

So what

Drei Konsequenzen für das Handwerk. Eins: Jede Leistungssteigerung unter 10 % in einem einzelnen Mikrobenchmark ist wahrscheinlich Rauschen. Sie ablehnen oder unter Randomisierung wiederholen. Zwei: Die Leistungsregressionen der CI (z. B. Codspeed) müssen die Randomisierung übernehmen, sonst lassen wir echte Regressionen durchgehen und machen uns Sorgen über Rauschen. Drei: Die Marketing-Benchmarks von Compilern und Runtimes (Bun vs Node, Zig vs C…) müssen mit diesem Filter gelesen werden. Die Leistung auf diesem Niveau hängt ebenso vom Build-Engineering wie vom Algorithmus ab.

Resources

Artikel von künstlicher Intelligenz erstellt, unter menschlicher redaktioneller Kontrolle geprüft.

Unsere Redaktion
Your Linux servers, as a desktop.
TermalOSSponsored
Ops, reimagined

Your Linux servers, as a desktop.

Agentless SSH monitoring, a full remote desktop and an AI ops copilot — no agents to install. Everything stays on your machine.

SSHMonitoringAI Ops
Get early access
War dieser Artikel hilfreich?

5 Personen gefiel dieser Artikel

Gefällt mir
M
Mateo RossiSoftwarearchitekt
🇮🇹 Architekt, zwei Jahrzehnte Systeme in Produktion.
Teilen:
Kommentare (6)

Melden Sie sich an, um an der Diskussion teilzunehmen.

Alex 11 Jul 2026 · 17:55

Ces variations sont impressionnantes. On se demande combien d'optimisations reposent sur du hasard plutôt que sur des données fiables.

1
Alex_London 11 Jul 2026 · 17:35

Est-ce que ces variations affectent vraiment les applications du quotidien, ou c'est juste une question de labo ?

ArtLover88 11 Jul 2026 · 16:50

Les micro-benchmarks sont vraiment peu fiables. Il faut en tenir compte quand on évalue les performances.

SkepticSam 11 Jul 2026 · 16:07

Est-ce qu'il existe des outils pour fiabiliser les micro-benchmarks ?

1
HistoryBuff 11 Jul 2026 · 15:55

On a bien fait de le rappeler : les micro-benchmarks sont trompeurs. Il faut les prendre avec des pincettes.

TechSavvy 11 Jul 2026 · 18:32

Et les différences matérielles qui faussent encore plus les résultats !

1
Dr. J. 11 Jul 2026 · 15:20

Je croyais aux benchmarks, mais là c'est inquiétant. Comment croire en ces mesures maintenant ?

1
Your Linux servers, as a desktop.
TermalOSSponsored
Ops, reimagined

Your Linux servers, as a desktop.

Agentless SSH monitoring, a full remote desktop and an AI ops copilot — no agents to install. Everything stays on your machine.

Get early access
Themen
Erkunden
Informationen