Uczciwe testy wydajności
Spec: ISO/IEC 25010 ISO/IEC 25010 Spec: ISO/IEC 17025 ISO/IEC 17025 Evidence: Benchmark-backed
W skrócie
Dział zatytułowany „W skrócie”Liczba z testu wydajności, pozbawiona metody jej uzyskania, nie mówi prawie nic. „NextPDF renderuje dokument w N milisekund” nie mówi nic, dopóki nie znasz dokumentu, sprzętu, liczby przebiegów ani wariancji. Ta strona wyjaśnia, jak NextPDF mierzy wydajność, dlaczego raportuje sygnał poddany bramce zamiast efektownej liczby oraz dlaczego nie podaje żadnej liczby dotyczącej szybkości.
Dlaczego to ważne
Dział zatytułowany „Dlaczego to ważne”Deklaracje o wydajności łatwo opublikować i łatwo sfałszować — zwykle przez przypadek. Pojedynczy przebieg po rozgrzewce na bezczynnym laptopie, najszybszy wynik z dziesięciu prób albo mikrotest funkcji, której nikt nie wywołuje na gorącej ścieżce — każdy z nich może dać prawdziwą liczbę, która nie mówi nic o twoim obciążeniu. Spec: ISO/IEC 25010 ISO/IEC 25010 definiuje wydajność jako realizowanie funkcji w ramach parametrów czasu i przepustowości w określonych warunkach (ISO/IEC 25010, §3.10). Jeśli usuniesz „w określonych warunkach”, liczba przestaje być pomiarem. Staje się liczbą bez znaczenia.
Istnieje też mniej oczywista forma porażki: liczba, która kiedyś była prawdziwa. W chwili gdy wynik testu wydajności trafia do tekstu, zostaje zamrożony. Tymczasem kod, środowisko uruchomieniowe i sprzęt wciąż się zmieniają. Nieaktualna deklaracja typu „szybki” jest nie tylko bezużyteczna. Jest błędna, i to po cichu.
Wersja skrócona
Dział zatytułowany „Wersja skrócona”- Liczba opisująca wydajność nic nie znaczy bez metody jej uzyskania: danych wejściowych, środowiska, liczby przebiegów, polityki rozgrzewki oraz rozrzutu wyników.
- NextPDF mierzy z użyciem powtarzanych przebiegów, odrzuca iteracje rozgrzewki i raportuje rozkład, a nie pojedynczą liczbę z najlepszego przypadku.
- Wykrywanie regresji jest statystyczne: wynik jest oceniany względem wartości bazowej za pomocą testu t Welcha, więc zmiana musi być jednocześnie istotna statystycznie i na tyle duża, by miała znaczenie, zanim zostanie uznana za regresję.
- Niestabilne środowisko jest wykrywane i raportowane, a nie po cichu uśredniane — wysoka wariancja między przebiegami unieważnia wynik, zamiast ukrywać się w średniej.
- Wydajność jest publikowana jako żywy sygnał generowany wraz z kompilacją, nigdy jako zamrożony nagłówek — dlatego na tej stronie nie pojawia się żadna liczba w milisekundach.
Jak NextPDF do tego podchodzi
Dział zatytułowany „Jak NextPDF do tego podchodzi”Bramka wydajności silnika to test statystyczny, a nie pojedynczy zmierzony przebieg. Udokumentowana metodyka uruchamia mierzony zestaw testów wielokrotnie, odrzuca skonfigurowaną liczbę przebiegów rozgrzewki oraz oblicza średnią, odchylenie standardowe i współczynnik zmienności zarówno dla czasu wykonania, jak i użycia pamięci. Następnie porównuje bieżący wynik z zatwierdzoną wartością bazową:
- 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.
Trzy właściwości utrzymują tę metodę w uczciwych ramach. Po pierwsze, regresja wymaga dwóch rzeczy naraz: istotności statystycznej (różnica prawdopodobnie nie jest szumem) oraz wielkości efektu przekraczającej próg (różnica jest na tyle duża, by mieć znaczenie praktyczne). Drobne, rzeczywiste spowolnienie nie wywołuje fałszywego alarmu. Duże spowolnienie w zaszumionych danych nie zostaje przeoczone. Po drugie, niestabilność jest werdyktem: gdy zmienność między przebiegami przekracza ustaloną granicę, bramka raportuje środowisko jako niewiarygodne. Nie uśrednia szumu do pozbawionej znaczenia średniej i nie uznaje tego za wynik zaliczony. Po trzecie, istnieje też bezwzględny pułap — sztywna górna granica, która powoduje niezaliczenie kompilacji niezależnie od wyników statystycznych. Dzięki niemu „brak istotnej regresji” nigdy nie może usprawiedliwić wyniku, który jest już zbyt wolny.
To rygor pomiarowy, który ISO/IEC 17025 opisuje dla każdej wiarygodnej metryki: wyniki uzyskane w z góry ustalonych warunkach — powtarzalność w obrębie jednego środowiska (ISO/IEC 17025, §3.7) oraz odtwarzalność między środowiskami (ISO/IEC 17025, §3.5). Liczba opisująca wydajność NextPDF ma znaczenie wyłącznie jako „ta metoda, ta wartość bazowa, ten przebieg”. Właśnie dlatego jest związana z kompilacją, która ją wytworzyła, a nie ze zdaniem na tej stronie.
Co mówią dowody
Dział zatytułowany „Co mówią dowody”Evidence: Benchmark-backed Bramka testów wydajności silnika wykonuje powtarzany pomiar z odrzucaniem rozgrzewki, podsumowuje wyniki średnią / odchyleniem standardowym / współczynnikiem zmienności oraz stosuje dwupróbkowy test t Welcha względem zatwierdzonej wartości bazowej, z jawnie rozróżnianymi wynikami zaliczony / regresja / niestabilny / przekroczenie sztywnego pułapu. Testy wydajności istnieją też jako dedykowany, osobno uruchamiany zestaw testów oraz uprząż PHPBench. Wydajność jest mierzona celowo, a nie szacowana.
Evidence: Standard-backed „W określonych warunkach” to nie redakcyjna ostrożność. To definicja. Spec: ISO/IEC 25010, §3.10 ISO/IEC 25010 §3.10 wiąże wydajność z określonymi warunkami czasu, przepustowości i zasobów. Liczba pozbawiona swoich warunków nie jest słabszym pomiarem. W ogóle nie jest pomiarem.
Evidence: Standard-backed Takie ujęcie powtarzalności i odtwarzalności wynika z Spec: ISO/IEC 17025 ISO/IEC 17025 : wynik jest wiarygodny tylko względem z góry ustalonych warunków, odróżniając powtarzalność w tym samym środowisku od odtwarzalności między środowiskami. Test wydajności, który nie potrafi określić swoich warunków, nie może rościć sobie prawa do żadnej z nich.
Praktyczny przykład
Dział zatytułowany „Praktyczny przykład”W praktyce „uczciwy” oznacza opis metody, a nie samą liczbę:
<?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.Tym, co dostarcza test wydajności, jest odtwarzalna metoda oraz werdykt. Surowa wartość w milisekundach należy do kompilacji, która ją wytworzyła, gdzie da się ją ponownie wyprowadzić — a nie do dokumentacji, gdzie nie jest to już możliwe.
Częste nieporozumienie
Dział zatytułowany „Częste nieporozumienie”Pierwsze nieporozumienie polega na tym, że test wydajności to liczba. Test wydajności to procedura, która daje rozkład. Jedna liczba to tylko jedna próbka z tego rozkładu. Raportowanie najlepszego z kilku przebiegów albo jednego przebiegu po rozgrzewce nie jest optymizmem. To mierzenie czegoś innego (szczytu w warunkach idealnych) i etykietowanie tego jako typowej wydajności.
Drugie nieporozumienie polega na tym, że „brak istotnej statystycznie regresji” oznacza „tak samo szybko jak wcześniej, gwarantowane”. Oznacza, że zaobserwowana różnica mieści się w granicach tego, co metoda potrafi odróżnić od szumu przy tej liczbie przebiegów i tej wariancji. To stwierdzenie jest ograniczone i warunkowe. Właśnie dlatego NextPDF utrzymuje bezwzględny pułap jako niezależne zabezpieczenie i odmawia sprowadzenia wyniku do niczym niepopartej deklaracji — zarówno na swoją korzyść, jak i przeciwko komukolwiek innemu.
Ograniczenia i granice
Dział zatytułowany „Ograniczenia i granice”Ta strona opisuje, jak NextPDF mierzy i raportuje wydajność. Celowo nie podaje żadnej liczby dotyczącej przepustowości, opóźnienia ani pamięci. To żywe sygnały generowane z artefaktów ciągłej integracji w podanych warunkach, a bieżące wartości są publikowane wraz z kompilacją. Liczba powtórzona tutaj byłaby pozbawiona warunków i uległaby dezaktualizacji — dokładnie ten błąd, przeciwko któremu ta strona występuje. Nie istnieje stała wartość wydajności, którą można by przytoczyć, więc żadna nie jest przytaczana. To rygor jest tym, co się dostarcza.
Liczba przebiegów, polityka rozgrzewki, progi i wartość bazowa należą do konfiguracji testów wydajności silnika i ewoluują wraz z silnikiem oraz jego sprzętem. Ta konfiguracja jest źródłem rozstrzygającym, gdyby kiedykolwiek okazała się niezgodna z tym wyjaśnieniem. NextPDF nie dokonuje żadnego porównania wydajności z jakąkolwiek inną biblioteką — ani korzystnego, ani niekorzystnego — ponieważ takie porównanie bez identycznych, podanych warunków byłoby dokładnie tą niczym niepopartą deklaracją, której ta strona odmawia.
Powiązane dokumenty
Dział zatytułowany „Powiązane dokumenty”- Testowanie z plikami wzorcowymi — ten sam rygor odtwarzalności zastosowany do poprawności wyjścia, w tym profile bitowy / strukturalny / semantyczny.
- Piramida testów NextPDF — gdzie mieści się warstwa wydajności i dlaczego jest włączana opcjonalnie, a nie przy każdej zmianie.
- Testowanie mutacyjne — wyjaśnienie — kolejne miejsce, w którym NextPDF raportuje sygnał poddany bramce, a nie liczbę dla samego efektu.
Słowniczek
Dział zatytułowany „Słowniczek”- Test wydajności (benchmark) — zdefiniowana procedura, która w podanych warunkach daje rozkład pomiarów, a nie pojedynczą liczbę.
- Przebieg rozgrzewki — początkowa iteracja, która jest odrzucana, aby efekty zimnego startu (JIT, pamięci podręczne, autoładowanie) nie zanieczyściły zmierzonego wyniku.
- Współczynnik zmienności — odchylenie standardowe podzielone przez średnią; bezwymiarowa miara rozrzutu używana do oceny, czy przebieg jest na tyle stabilny, by można było mu zaufać.
- Test t Welcha — dwupróbkowy test statystyczny dla nierównych wariancji, używany tutaj do rozstrzygnięcia, czy wynik różni się od wartości bazowej ponad poziom szumu.
- Wielkość efektu — jak duża jest różnica, niezależnie od istotności statystycznej; NextPDF wymaga obu, zanim ogłosi regresję.
- Powtarzalność / odtwarzalność — zgodność wyników w z góry ustalonych warunkach w obrębie jednego środowiska (powtarzalność) lub między środowiskami (odtwarzalność), zgodnie z ISO/IEC 17025.
- Bezwzględny pułap — sztywna górna granica, która powoduje niezaliczenie kompilacji niezależnie od porównania statystycznego.