Ehrliches Benchmarking
Spec: ISO/IEC 25010 ISO/IEC 25010 Spec: ISO/IEC 17025 ISO/IEC 17025 Evidence: Benchmark-backed
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Eine Benchmarkzahl ohne ihre Methode sagt fast nichts aus. „NextPDF rendert ein Dokument in N Millisekunden“ sagt nichts aus, solange Sie nicht das Dokument, die Hardware, die Anzahl der Durchläufe und die Varianz kennen. Diese Seite erklärt, wie NextPDF Performance misst, warum es ein abgesichertes Signal statt einer plakativen Zahl ausweist und warum sie keine Geschwindigkeitszahl nennt.
Warum das wichtig ist
Abschnitt betitelt „Warum das wichtig ist“Performancebehauptungen sind die Zahlen, die sich am leichtesten veröffentlichen und am leichtesten verfälschen lassen — meist versehentlich. Ein einzelner warmer Durchlauf auf einem unausgelasteten Laptop, der schnellste von zehn Versuchen, ein Mikrobenchmark einer Funktion, die niemand in einem Hot Path aufruft: Jeder davon liefert eine reale Zahl, die nichts über Ihre Arbeitslast vorhersagt. Spec: ISO/IEC 25010 ISO/IEC 25010 definiert Performance-Effizienz als die Ausführung von Funktionen innerhalb von Zeit- und Durchsatzparametern unter festgelegten Bedingungen (ISO/IEC 25010, §3.10). Wenn Sie „unter festgelegten Bedingungen“ entfernen, ist die Zahl keine Messung mehr. Sie wird zu einer Zahl ohne Bedeutung.
Es gibt auch ein stilleres Versagen: eine Zahl, die einmal zutraf. In dem Moment, in dem Sie ein Benchmark-Ergebnis in Fließtext aufnehmen, friert es ein. Währenddessen ändern sich Code, Laufzeitumgebung und Hardware ständig weiter. Eine veraltete Behauptung, etwas sei „schnell“, ist nicht nur unbrauchbar. Sie ist falsch, und sie ist es unbemerkt.
Die Kurzfassung
Abschnitt betitelt „Die Kurzfassung“- Eine Performancezahl ist ohne ihre Methode bedeutungslos: die Eingabe, die Umgebung, die Anzahl der Durchläufe, die Aufwärmrichtlinie und die Streuung.
- NextPDF misst mit wiederholten Durchläufen, verwirft Aufwärmiterationen und weist eine Verteilung aus, nicht eine einzelne Bestfallzahl.
- Die Regressionserkennung ist statistisch: Ein Ergebnis wird mit dem Welch-t-Test gegen eine Baseline beurteilt, sodass eine Änderung sowohl statistisch signifikant als auch relevant groß sein muss, bevor sie als Regression zählt.
- Eine instabile Umgebung wird erkannt und gemeldet, nicht stillschweigend weggemittelt — eine hohe Varianz von Durchlauf zu Durchlauf macht das Ergebnis ungültig, statt im Mittelwert zu verschwinden.
- Performance wird als lebendiges, mit dem Build erzeugtes Signal veröffentlicht, niemals als eingefrorene Schlagzeile — deshalb erscheint auf dieser Seite keine Millisekundenzahl.
Wie NextPDF daran herangeht
Abschnitt betitelt „Wie NextPDF daran herangeht“Das Performance-Gate der Engine ist ein statistischer Test, kein einzelner gemessener Durchlauf. Seine dokumentierte Methodik führt die gemessene Suite mehrfach aus, verwirft eine konfigurierte Anzahl von Aufwärmdurchläufen und berechnet Mittelwert, Standardabweichung und Variationskoeffizienten sowohl für die Dauer als auch für den Speicher. Anschließend vergleicht sie das aktuelle Ergebnis mit einer committeten Baseline:
- Repeat Run the measured suite N times under fixed conditions.
- Discard warmup Drop the first W runs so cold-start noise is excluded.
- Summarise Compute mean, standard deviation, and coefficient of variation for duration and memory.
- Test vs baseline Welch's t-test (two-sample, unequal variance) against the committed baseline.
- Decide Significant AND effect over threshold → regression. Variance over threshold → unreliable, not a pass. Absolute ceiling breach → hard fail.
Drei Eigenschaften machen diesen Ansatz ehrlich. Erstens benötigt eine Regression zwei Dinge zugleich: statistische Signifikanz (die Differenz ist wahrscheinlich kein Rauschen) und eine Effektstärke jenseits eines Schwellenwerts (die Differenz ist groß genug, um relevant zu sein). Eine winzige, reale Verlangsamung löst keinen Fehlalarm aus. Eine große Differenz in verrauschten Daten wird nicht übersehen. Zweitens führt Instabilität zu einem Urteil: Wenn die Schwankung von Durchlauf zu Durchlauf eine Grenze überschreitet, meldet das Gate die Umgebung als unzuverlässig. Es bildet keinen bedeutungslosen Mittelwert, um ihn als bestanden zu werten. Drittens gibt es weiterhin eine absolute Obergrenze — eine harte Obergrenze, die den Build unabhängig von der Statistik scheitern lässt. Dadurch kann „keine signifikante Regression“ niemals ein bereits zu langsames Ergebnis entschuldigen.
Das ist die Messdisziplin, die ISO/IEC 17025 für jede glaubwürdige Kennzahl beschreibt: Ergebnisse, die unter vorab festgelegten Bedingungen erzielt werden — Wiederholbarkeit innerhalb einer Umgebung (ISO/IEC 17025, §3.7) und Reproduzierbarkeit über mehrere Umgebungen hinweg (ISO/IEC 17025, §3.5). Eine NextPDF-Performancezahl ist nur als „diese Methode, diese Baseline, dieser Durchlauf“ aussagekräftig. Genau deshalb lebt sie bei dem Build, der sie erzeugt hat, und nicht in einem Satz hier.
Was die Belege sagen
Abschnitt betitelt „Was die Belege sagen“Evidence: Benchmark-backed Das Benchmark-Gate der Engine implementiert wiederholte Messungen mit Verwerfen der Aufwärmdurchläufe, Zusammenfassung von Mittelwert / Standardabweichung / Variationskoeffizient sowie einen Zweistichproben-Welch-t-Test gegen eine committete Baseline, mit den expliziten Ergebnissen bestanden / Regression / unzuverlässig / harte Obergrenze. Performance-Benchmarks existieren zudem als eigene, separat ausführbare Suite und ein PHPBench-Harness. Performance wird bewusst gemessen, nicht geschätzt.
Evidence: Standard-backed „Unter festgelegten Bedingungen“ ist keine redaktionelle Vorsicht, sondern die Definition. Spec: ISO/IEC 25010, §3.10 ISO/IEC 25010 §3.10 bindet Performance-Effizienz an festgelegte Zeit-, Durchsatz- und Ressourcenbedingungen. Eine Zahl ohne ihre Bedingungen ist keine schwächere Messung. Sie ist keine Messung.
Evidence: Standard-backed Die Einordnung von Wiederholbarkeit und Reproduzierbarkeit folgt Spec: ISO/IEC 17025 ISO/IEC 17025 : Ein Ergebnis ist nur relativ zu vorab festgelegten Bedingungen glaubwürdig und unterscheidet die Wiederholbarkeit in derselben Umgebung von der Reproduzierbarkeit über mehrere Umgebungen hinweg. Ein Benchmark, der seine Bedingungen nicht angeben kann, kann keines von beiden beanspruchen.
Praktisches Beispiel
Abschnitt betitelt „Praktisches Beispiel“Wie „ehrlich“ in der Praxis aussieht, ist eine Methodenangabe, keine Zahl:
<?php
declare(strict_types=1);
// The gate is invoked with its conditions made explicit, e.g.://// php ci/scripts/benchmark-gate.php \// --runs=5 --warmup=1 --testsuite=Unit \// --baseline=<committed-baseline>//// It then reports, for duration AND memory:// - mean, standard deviation, coefficient of variation (the spread)// - Welch's t-test p-value and effect size vs the baseline// - a verdict: PASS | REGRESSION | UNSTABLE | hard-ceiling FAIL//// An honest performance statement is therefore shaped like:// "<suite>, <runs> runs (<warmup> warmup), <hardware/runtime>,// no statistically significant regression vs baseline <id>;// coefficient of variation within bound."//// It is NEVER shaped like:// "NextPDF is fast" — or a bare millisecond number with no method.Das Ergebnis eines Benchmarks ist die reproduzierbare Methode und das Urteil. Der rohe Millisekundenwert gehört zu dem Build, der ihn erzeugt hat; dort können Sie ihn erneut ableiten. Er gehört nicht in die Dokumentation, wo das nicht möglich ist.
Verbreitetes Missverständnis
Abschnitt betitelt „Verbreitetes Missverständnis“Das erste Missverständnis ist, dass ein Benchmark eine Zahl sei. Ein Benchmark ist ein Verfahren, das eine Verteilung liefert. Die Zahl ist nur eine einzelne Beobachtung daraus. Den besten von mehreren Durchläufen oder einen einzelnen warmen Durchlauf auszuweisen, ist nicht optimistisch. Das misst etwas anderes (Spitzenwert unter idealen Bedingungen) und etikettiert es als typische Performance.
Das zweite Missverständnis ist, dass „keine statistisch signifikante Regression“ „garantiert so schnell wie zuvor“ bedeute. Es bedeutet, dass die beobachtete Differenz innerhalb dessen liegt, was die Methode bei dieser Anzahl von Durchläufen und dieser Varianz vom Rauschen unterscheiden kann. Das ist eine begrenzte, bedingte Aussage. Genau deshalb behält NextPDF die absolute Obergrenze als unabhängige Absicherung bei und weigert sich, das Ergebnis in eine pauschale Behauptung zu komprimieren — weder zu eigenen Gunsten noch gegen jemand anderen.
Grenzen und Abgrenzungen
Abschnitt betitelt „Grenzen und Abgrenzungen“Diese Seite beschreibt, wie NextPDF Performance misst und ausweist. Sie nennt absichtlich keine Durchsatz-, Latenz- oder Speicherzahl. Das sind lebendige Signale, die aus Continuous-Integration-Artefakten unter angegebenen Bedingungen erzeugt werden, und die aktuellen Werte werden mit dem Build veröffentlicht. Eine hier wiederholte Zahl stünde ohne Bedingungen da und würde veralten — genau das Versagen, gegen das diese Seite argumentiert. Es gibt keine stabile Performancekonstante zum Zitieren, also wird keine zitiert. Die Disziplin ist das Ergebnis.
Die Anzahl der Durchläufe, die Aufwärmrichtlinie, die Schwellenwerte und die Baseline gehören zur Benchmark-Konfiguration der Engine und entwickeln sich mit der Engine und ihrer Hardware weiter. Diese Konfiguration ist maßgeblich, falls sie jemals von dieser Erklärung abweicht. NextPDF stellt keinen Performancevergleich mit irgendeiner anderen Bibliothek an — weder vorteilhaft noch nachteilig —, weil ein solcher Vergleich ohne identische, angegebene Bedingungen genau die pauschale Behauptung wäre, die diese Seite ablehnen soll.
Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- Golden-File-Testing — dieselbe Reproduzierbarkeitsdisziplin, angewendet auf die Korrektheit der Ausgabe, einschließlich der bitweisen / strukturellen / semantischen Profile.
- Die NextPDF-Testpyramide — wo die Performanceebene sitzt und warum sie optional ist statt bei jeder Änderung aktiv.
- Mutationstests, erklärt — eine weitere Stelle, an der NextPDF ein abgesichertes Signal statt einer Vanity-Zahl ausweist.
Glossar
Abschnitt betitelt „Glossar“- Benchmark — ein definiertes Verfahren, das unter angegebenen Bedingungen eine Verteilung von Messungen erzeugt, keine einzelne Zahl.
- Aufwärmdurchlauf — eine anfängliche Iteration, die verworfen wird, damit Kaltstart-Effekte (JIT, Caches, Autoload) das gemessene Ergebnis nicht verfälschen.
- Variationskoeffizient — Standardabweichung geteilt durch den Mittelwert; ein einheitenfreies Streuungsmaß, mit dem beurteilt wird, ob ein Durchlauf stabil genug ist, um ihm zu vertrauen.
- Welch-t-Test — ein Zweistichprobentest für ungleiche Varianzen, hier verwendet, um zu entscheiden, ob sich ein Ergebnis über das Rauschen hinaus von der Baseline unterscheidet.
- Effektstärke — wie groß eine Differenz ist, unabhängig von der statistischen Signifikanz; NextPDF verlangt beides, bevor es eine Regression feststellt.
- Wiederholbarkeit / Reproduzierbarkeit — Übereinstimmung von Ergebnissen unter vorab festgelegten Bedingungen innerhalb einer Umgebung (Wiederholbarkeit) oder über mehrere Umgebungen hinweg (Reproduzierbarkeit), gemäß ISO/IEC 17025.
- Absolute Obergrenze — eine harte Obergrenze, die den Build unabhängig vom statistischen Vergleich scheitern lässt.