Benchmark Builder

Fügen Sie Roh-Laufzeiten mehrerer Implementierungen ein und erhalten Sie Mittelwert, Median, Standardabweichung, Minimum, Maximum und relative Geschwindigkeit in einer einzigen Vergleichstabelle – plus eine Markdown-Version zum Einfügen überall.

Verwandeln Sie einen Haufen Laufzeiten in eine Vergleichstabelle. Eine Suite pro Zeile, eine Bezeichnung, ein Doppelpunkt, dann Ihre Roh-Messwerte. Es berechnet die üblichen Statistiken, ordnet alles nach der schnellsten Suite und liefert Ihnen eine Markdown-Tabelle für den Pull-Request.

Eine Suite pro Zeile als "Name: Wert, Wert, Wert". Kommas, Semikolons oder Leerzeichen fungieren alle als Trennzeichen.

Suite Durchläufe Mittelwert Median Std.-Abw. Min Max Relativ

Fügen Sie mindestens eine Zeile der Form "Name: 1, 2, 3" hinzu, um den Vergleich zu sehen.

Eine Benchmark-Tabelle lesen, ohne getäuscht zu werden

Mittelwert und Median widersprechen sich aus einem Grund

Die Tabelle zeigt beide, und die Lücke zwischen ihnen ist das erste, was sich lohnt anzusehen. Wenn der Mittelwert deutlich über dem Median liegt, ziehen eine kleine Zahl langsamer Durchläufe den Durchschnitt nach oben – eine Garbage-Collection-Pause, ein Cache-Miss-Sturm, das Betriebssystem, das beschließt, etwas anderes auf Ihrem Kern zu planen. Der Median ignoriert das; der Mittelwert tut es nicht.

Keiner von beiden ist automatisch der richtige, den man zitiert. Wenn Sie einen Server für den Dauerbetrieb auslegen, ist der Mittelwert entscheidend, weil diese langsamen Durchläufe tatsächlich Zeit verbrauchen. Wenn Sie zwei Implementierungen vergleichen, um zu entscheiden, welcher Algorithmus besser ist, ist der Median meist die fairere Zahl, weil die Ausreißer Ihre Maschine und nicht Ihren Code messen. Zitieren Sie, worüber Sie tatsächlich nachdenken, und sagen Sie, welcher es ist.

Die Standardabweichung sagt Ihnen, ob der Vergleich echt ist

Ein Unterschied der Mittelwerte bedeutet nur dann etwas, wenn er groß im Vergleich zur Streuung ist. Zwei Suites bei 12,0 und 12,4 Millisekunden mit einer Standardabweichung von 0,05 sind tatsächlich verschieden. Dieselben beiden Mittelwerte mit einer Standardabweichung von 3,0 sind dieselbe Zahl mit anderem Hut, und jede aus ihnen gezogene Schlussfolgerung ist Rauschen.

Dieses Werkzeug verwendet die Stichproben-Standardabweichung und teilt durch n-1 statt durch n. Das ist hier die richtige Wahl: Ihre Durchläufe sind eine Stichprobe aus der Gesamtheit aller möglichen Durchläufe, nicht die gesamte Grundgesamtheit, und das Teilen durch n würde die Streuung systematisch unterschätzen. Bei einem einzigen Durchlauf gibt es keine Streuung zu berechnen, also zeigt die Spalte Null – was daran erinnert, dass eine Messung kein Benchmark ist.

Relative Geschwindigkeit ist die Zahl, die man sich merkt

Die letzte Spalte drückt jede Suite als ein Vielfaches der schnellsten aus, weil das die Form ist, in der das Ergebnis meist weitergegeben wird. „Der neue Parser ist 2,4× schneller" verbreitet sich; „der neue Parser braucht im Schnitt 8,2 Millisekunden" tut das nicht, es sei denn, der Zuhörer kennt die Basislinie bereits.

Zwei Warnungen. Erstens erbt das Verhältnis die gesamte Unsicherheit der beiden dahinterliegenden Mittelwerte, also ist ein 1,05×-Unterschied bei verrauschten Daten gar kein Unterschied. Zweitens sind Verhältnisse von Mittelwerten nicht dasselbe wie Mittelwerte von Verhältnissen, und wenn die Durchläufe stark in der Größe variieren, können beide in unterschiedliche Richtungen zeigen. Wenn die Zahlen nahe beieinander liegen, geben Sie die Streuung zusammen mit dem Verhältnis an und überlassen Sie dem Leser die Beurteilung.

Läuft vollständig im Browser mit reinem JavaScript – keine Bibliotheken, keine Uploads, keine Verfolgung.

Häufig gestellte Fragen

In welchem Format müssen die Messwerte vorliegen?
Eine Zeile pro Suite: eine Bezeichnung, ein Doppelpunkt, dann die Zahlen. Kommas, Semikolons, Leerzeichen und Tabs zählen alle als Trennzeichen, sodass die meisten kopierten Ausgaben ohne Bearbeitung funktionieren.
Wandelt der Einheiten-Selektor etwas um?
Nein. Er beschriften nur die Ausgabe. Die Statistiken werden auf den Zahlen genau so berechnet, wie Sie sie eingegeben haben, also müssen alle Suites auf der Seite bereits in derselben Einheit vorliegen.
Warum ist die Standardabweichung bei einem einzigen Durchlauf null?
Die Stichproben-Standardabweichung teilt durch n-1, was bei n=1 null ist. Eine einzelne Messung hat keine Streuung zu berichten, und die Null ist ein Hinweis, dass Sie mehr Durchläufe sammeln sollten.
Wie wird „relativ" berechnet?
Der Mittelwert jeder Suite wird durch den kleinsten Mittelwert auf der Seite geteilt. Die schnellste Suite wird als solche beschriftet statt 1,00× anzuzeigen, da das in der exportierten Tabelle besser liest.
Kann ich Ausgaben direkt aus einem Benchmarking-Werkzeug einfügen?
Meistens. Solange jede Zeile einen Namen, einen Doppelpunkt und einige Zahlen hat, wird die zusätzliche Interpunktion als Trennzeichen behandelt. Zeilen ohne Doppelpunkt werden übersprungen, anstatt einen Fehler zu verursachen.
Ist die Markdown-Tabelle sicher zum Einfügen in einen Pull-Request?
Ja – es ist einfaches GitHub-Flavoured Markdown mit einer Kopfzeile und einer Trennzeile. Die Spaltenüberschriften folgen der Seitensprache, also wechseln Sie zuerst die Sprache, wenn Sie sie auf Englisch wünschen.