Bỏ qua để đến nội dung

Đo điểm chuẩn một cách trung thực

Spec: ISO/IEC 25010 Spec: ISO/IEC 17025 Evidence: Benchmark-backed

Một con số từ phép đo điểm chuẩn mà thiếu phương pháp thì gần như không nói lên điều gì. “NextPDF kết xuất một tài liệu trong N mili giây” không cho bạn biết gì trừ khi bạn biết tài liệu đó là gì, phần cứng ra sao, số lần chạy và độ biến thiên. Trang này giải thích cách NextPDF đo hiệu năng, vì sao nó báo cáo một tín hiệu được kiểm soát thay vì một con số nổi bật, và vì sao nó không đưa ra bất kỳ con số tốc độ nào.

Các tuyên bố về hiệu năng dễ công bố và cũng dễ bị bóp méo, thường là vô tình. Một lần chạy sau khi đã làm nóng trên một laptop đang rảnh, kết quả nhanh nhất trong mười lần thử, hay một microbenchmark của một hàm chẳng ai gọi trên đường thực thi nóng đều có thể tạo ra một con số có thật nhưng không dự đoán được gì về khối lượng công việc của bạn. Spec: ISO/IEC 25010 định nghĩa hiệu suất hiệu năng là việc thực hiện các chức năng trong giới hạn thời gian và thông lượng theo các điều kiện đã xác định (ISO/IEC 25010, §3.10). Nếu bỏ “theo các điều kiện đã xác định”, con số đó không còn là một phép đo. Nó trở thành một con số không có ý nghĩa.

Còn một kiểu thất bại âm thầm hơn nữa: một con số chỉ từng đúng tại một thời điểm. Ngay khi bạn dán một kết quả đo điểm chuẩn vào văn bản, nó bị đóng băng. Trong khi đó, mã nguồn, môi trường chạy và phần cứng vẫn liên tục thay đổi. Một tuyên bố “nhanh” đã lỗi thời không chỉ vô ích. Nó sai, và sai một cách âm thầm.

  • Một con số hiệu năng là vô nghĩa nếu thiếu phương pháp đi kèm: dữ liệu đầu vào, môi trường, số lần chạy, chính sách làm nóng và độ phân tán.
  • NextPDF đo bằng nhiều lần chạy lặp, loại bỏ các vòng lặp làm nóng, và báo cáo một phân phối, chứ không phải một con số đơn lẻ trong trường hợp tốt nhất.
  • Việc phát hiện hồi quy dựa trên thống kê: một kết quả được đánh giá so với một đường cơ sở bằng kiểm định t của Welch, nên một thay đổi phải vừa có ý nghĩa thống kê vừa đủ lớn để đáng kể thì mới được tính là một hồi quy.
  • Một môi trường không ổn định sẽ được phát hiện và báo cáo, chứ không bị âm thầm lấy trung bình để cho qua — độ biến thiên cao giữa các lần chạy làm kết quả mất hiệu lực, thay vì bị ẩn trong giá trị trung bình.
  • Hiệu năng được công bố dưới dạng một tín hiệu sống được tạo ra cùng với bản dựng, không bao giờ là một con số nổi bật bị đóng băng — đó là lý do không có con số mili giây nào xuất hiện trên trang này.

Cổng kiểm soát hiệu năng của engine là một phép kiểm định thống kê, không phải một lần chạy bấm giờ đơn lẻ. Phương pháp đã được tài liệu hóa sẽ chạy bộ kiểm thử đo lường nhiều lần, loại bỏ một số lần chạy làm nóng đã cấu hình, và tính giá trị trung bình, độ lệch chuẩn cùng hệ số biến thiên cho cả thời lượng lẫn bộ nhớ. Sau đó, nó so sánh kết quả hiện tại với một đường cơ sở đã commit:

  1. Repeat Run the measured suite N times under fixed conditions.
  2. Discard warmup Drop the first W runs so cold-start noise is excluded.
  3. Summarise Compute mean, standard deviation, and coefficient of variation for duration and memory.
  4. Test vs baseline Welch's t-test (two-sample, unequal variance) against the committed baseline.
  5. Decide Significant AND effect over threshold → regression. Variance over threshold → unreliable, not a pass. Absolute ceiling breach → hard fail.
Cách cổng đo điểm chuẩn của NextPDF quyết định đạt, không đạt hay không đáng tin: thực hiện các phép đo lặp lại, loại bỏ các lần làm nóng, tóm tắt phân phối, rồi áp dụng kiểm định t của Welch so với một đường cơ sở đã commit. Một hồi quy đòi hỏi có ý nghĩa thống kê VÀ một độ lớn hiệu ứng đáng kể; độ biến thiên quá mức được báo cáo là không đáng tin thay vì bị lấy trung bình thành một phán quyết.

Ba thuộc tính giữ cho cách làm này trung thực. Thứ nhất, một hồi quy cần hai điều cùng lúc: ý nghĩa thống kê (khác biệt khó có khả năng là nhiễu) một độ lớn hiệu ứng vượt ngưỡng (khác biệt đủ lớn để đáng quan tâm). Một sự chậm đi thật nhưng rất nhỏ sẽ không kích hoạt cảnh báo giả. Một sự chậm đi lớn trong dữ liệu nhiễu sẽ không bị bỏ sót. Thứ hai, sự không ổn định là một phán quyết: khi biến thiên giữa các lần chạy vượt một giới hạn, cổng kiểm soát báo cáo môi trường là không đáng tin. Nó không lấy trung bình nhiễu thành một giá trị trung bình vô nghĩa rồi gọi đó là đạt. Thứ ba, vẫn còn một trần tuyệt đối — một giới hạn trên cứng làm bản dựng không đạt bất kể số liệu thống kê. Nhờ vậy, “không có hồi quy đáng kể” không bao giờ có thể biện minh cho một kết quả vốn đã quá chậm.

Đây là kỷ luật đo lường mà ISO/IEC 17025 mô tả cho mọi chỉ số đáng tin cậy: kết quả thu được theo các điều kiện được định trước — tính lặp lại trong cùng một môi trường (ISO/IEC 17025, §3.7) và tính tái lập giữa các môi trường (ISO/IEC 17025, §3.5). Một con số hiệu năng của NextPDF chỉ có ý nghĩa theo nghĩa “phương pháp này, đường cơ sở này, lần chạy này”. Đó chính xác là lý do nó tồn tại cùng với bản dựng đã tạo ra nó, chứ không phải trong một câu văn ở đây.

Evidence: Benchmark-backed Cổng đo điểm chuẩn của engine triển khai phép đo lặp có loại bỏ các lần làm nóng, tóm tắt giá trị trung bình / độ lệch chuẩn / hệ số biến thiên, và một kiểm định t của Welch hai mẫu so với một đường cơ sở đã commit, với các kết quả rõ ràng là đạt / hồi quy / không ổn định / không đạt vì vượt trần cứng. Các phép đo điểm chuẩn hiệu năng cũng tồn tại dưới dạng một bộ kiểm thử riêng có thể chạy độc lập và một bộ khung PHPBench. Hiệu năng được đo có chủ đích, chứ không phải ước lượng.

Evidence: Standard-backed “Theo các điều kiện đã xác định” không phải là lựa chọn thận trọng về biên tập. Nó chính là định nghĩa. Spec: ISO/IEC 25010, §3.10 gắn hiệu suất hiệu năng với các điều kiện về thời gian, thông lượng và tài nguyên đã xác định. Một con số mà thiếu các điều kiện của nó thì không phải là một phép đo yếu hơn. Nó không phải là một phép đo.

Evidence: Standard-backed Cách diễn giải tính lặp lại và tính tái lập tuân theo Spec: ISO/IEC 17025 : một kết quả chỉ đáng tin trong tương quan với các điều kiện được định trước, phân biệt tính lặp lại trong cùng môi trường với tính tái lập giữa các môi trường khác nhau. Một phép đo điểm chuẩn không thể nêu rõ các điều kiện của nó thì không thể tuyên bố cả hai.

Trong thực tế, “trung thực” trông giống một bản trình bày phương pháp, chứ không phải một con số:

<?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.

Sản phẩm bàn giao của một phép đo điểm chuẩn là phương pháp có thể tái lập và phán quyết. Giá trị mili giây thô thuộc về bản dựng đã tạo ra nó, nơi bạn có thể tính lại — chứ không phải được chép vào tài liệu, nơi bạn không thể.

Hiểu lầm thứ nhất là cho rằng một phép đo điểm chuẩn là một con số. Một phép đo điểm chuẩn là một quy trình tạo ra một phân phối. Con số chỉ là một lần rút ra từ phân phối đó. Báo cáo kết quả tốt nhất trong nhiều lần chạy, hay một lần chạy đã làm nóng, không phải chỉ là lạc quan. Đó là đo một thứ khác (đỉnh điểm trong điều kiện lý tưởng) rồi gắn nhãn nó là hiệu năng điển hình.

Hiểu lầm thứ hai là cho rằng “không có hồi quy đáng kể về mặt thống kê” nghĩa là “nhanh như trước, được đảm bảo”. Nó có nghĩa là khác biệt quan sát được nằm trong phạm vi mà phương pháp có thể phân biệt với nhiễu, với số lần chạy này và độ biến thiên này. Đó là một phát biểu có giới hạn và có điều kiện. Đó chính xác là lý do NextPDF giữ trần tuyệt đối như một biện pháp bảo vệ độc lập và từ chối ép kết quả thành một tuyên bố không kèm điều kiện — cho chính nó hoặc nhằm vào bất kỳ ai khác.

Trang này mô tả cách NextPDF đo và báo cáo hiệu năng. Nó cố ý không nêu bất kỳ con số nào về thông lượng, độ trễ hay bộ nhớ. Đó là những tín hiệu sống được tạo ra từ các artifact tích hợp liên tục theo các điều kiện đã nêu, và các giá trị hiện tại được công bố cùng với bản dựng. Một con số được lặp lại ở đây sẽ không có điều kiện đi kèm và sẽ trở nên lỗi thời — chính kiểu thất bại mà trang này phản đối. Không có hằng số hiệu năng ổn định nào để trích dẫn, vì vậy không trích dẫn con số nào cả. Chính kỷ luật đó là sản phẩm bàn giao.

Số lần chạy, chính sách làm nóng, các ngưỡng và đường cơ sở đều thuộc về cấu hình đo điểm chuẩn của engine và phát triển cùng với engine cũng như phần cứng của nó. Cấu hình đó là nguồn có thẩm quyền nếu có lúc mâu thuẫn với giải thích này. NextPDF không đưa ra bất kỳ so sánh hiệu năng nào với thư viện khác — dù có lợi hay bất lợi — vì một so sánh như vậy mà không có các điều kiện giống hệt và đã nêu rõ thì sẽ chính là kiểu tuyên bố không kèm điều kiện mà trang này tồn tại để từ chối.

  • Benchmark (đo điểm chuẩn) — một quy trình được định nghĩa tạo ra một phân phối các phép đo theo các điều kiện đã nêu, chứ không phải một con số đơn lẻ.
  • Warmup run (lần chạy làm nóng) — một lần chạy ban đầu bị loại bỏ để các hiệu ứng khởi động lạnh (JIT, bộ nhớ đệm, autoload) không gây nhiễu cho kết quả đo.
  • Coefficient of variation (hệ số biến thiên) — độ lệch chuẩn chia cho giá trị trung bình; một thước đo độ phân tán không có đơn vị, dùng để đánh giá xem một lần chạy có đủ ổn định để đáng tin cậy hay không.
  • Welch’s t-test (kiểm định t của Welch) — một kiểm định thống kê hai mẫu cho các phương sai không bằng nhau, dùng ở đây để quyết định xem một kết quả có khác đường cơ sở vượt ngoài mức nhiễu hay không.
  • Effect size (độ lớn hiệu ứng) — mức độ lớn của một khác biệt, độc lập với ý nghĩa thống kê; NextPDF yêu cầu cả hai trước khi tuyên bố một hồi quy.
  • Repeatability / reproducibility (tính lặp lại / tính tái lập) — sự nhất quán của các kết quả theo các điều kiện được định trước trong cùng một môi trường (tính lặp lại) hoặc giữa các môi trường (tính tái lập), theo ISO/IEC 17025.
  • Absolute ceiling (trần tuyệt đối) — một giới hạn trên cứng khiến bản dựng không đạt bất kể phép so sánh thống kê.