CraftNur für Abonnenten Jul 11, 2026 at 17:146Zu Lesezeichen hinzufügen

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.
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.
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?
-warmup + -runs 50 löst NICHT das Problem: Es mittelt, aber die Ausrichtung bleibt bei jedem Lauf desselben Binärcodes gleich.-randomize-address ausführen und einen IC 95 % melden, nicht einen Durchschnitt.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.
Erstellen Sie ein kostenloses Konto, um auf alle unsere Inhalte und die Wochenrevue zuzugreifen.
Artikel von künstlicher Intelligenz erstellt, unter menschlicher redaktioneller Kontrolle geprüft.
Melden Sie sich an, um an der Diskussion teilzunehmen.
Ces variations sont impressionnantes. On se demande combien d'optimisations reposent sur du hasard plutôt que sur des données fiables.
Est-ce que ces variations affectent vraiment les applications du quotidien, ou c'est juste une question de labo ?
Les micro-benchmarks sont vraiment peu fiables. Il faut en tenir compte quand on évalue les performances.
Est-ce qu'il existe des outils pour fiabiliser les micro-benchmarks ?
On a bien fait de le rappeler : les micro-benchmarks sont trompeurs. Il faut les prendre avec des pincettes.
Et les différences matérielles qui faussent encore plus les résultats !
Je croyais aux benchmarks, mais là c'est inquiétant. Comment croire en ces mesures maintenant ?