การวัดประสิทธิภาพอย่างตรงไปตรงมา
Spec: ISO/IEC 25010 ISO/IEC 25010 Spec: ISO/IEC 17025 ISO/IEC 17025 Evidence: Benchmark-backed
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”ตัวเลขจากการวัดประสิทธิภาพที่ไม่ระบุวิธีการแทบไม่สื่ออะไรเลย ประโยคว่า “NextPDF เรนเดอร์เอกสารหนึ่งฉบับใน N มิลลิวินาที” จะไม่มีความหมายหากไม่ทราบว่าใช้เอกสารใด ฮาร์ดแวร์ใด รันกี่รอบ และผลแปรปรวนเพียงใด หน้านี้อธิบายว่า NextPDF วัดประสิทธิภาพอย่างไร เหตุใดจึงรายงานผลเป็นสัญญาณที่ผ่านเกณฑ์แทนตัวเลขพาดหัว และเหตุใดจึงไม่แสดงตัวเลขความเร็วใดๆ
เหตุใดเรื่องนี้จึงสำคัญ
หัวข้อที่มีชื่อว่า “เหตุใดเรื่องนี้จึงสำคัญ”การกล่าวอ้างเรื่องประสิทธิภาพเผยแพร่ได้ง่ายและบิดเบือนได้ง่าย โดยส่วนใหญ่เกิดขึ้นโดยไม่ตั้งใจ การรันหลังอุ่นเครื่องเพียงรอบเดียวบนแล็ปท็อปที่ว่างงาน ผลลัพธ์ที่เร็วที่สุดจากการลองสิบครั้ง หรือการวัดประสิทธิภาพระดับจุลภาคของฟังก์ชันที่ไม่ได้ถูกเรียกใช้ในเส้นทางงานหนัก ล้วนให้ตัวเลขจริงที่ไม่ช่วยคาดการณ์ภาระงานจริงได้เลย Spec: ISO/IEC 25010 ISO/IEC 25010 นิยามประสิทธิภาพการทำงานว่าเป็นการทำงานของฟังก์ชันภายในพารามิเตอร์ด้านเวลาและปริมาณงาน ภายใต้เงื่อนไขที่ระบุไว้ (ISO/IEC 25010, §3.10) หากตัด “ภายใต้เงื่อนไขที่ระบุไว้” ออกไป ตัวเลขนั้นก็สิ้นสภาพการเป็นการวัด และกลายเป็นจำนวนที่ไร้ความหมาย
ยังมีความล้มเหลวที่แฝงอยู่กว่านั้น นั่นคือตัวเลขที่เคยเป็นจริงในอดีต ทันทีที่นำผลการวัดประสิทธิภาพไปใส่ไว้ในข้อความ ตัวเลขนั้นก็ถูกตรึงไว้ ขณะที่โค้ด รันไทม์ และฮาร์ดแวร์ยังเปลี่ยนแปลงอยู่ตลอด การกล่าวอ้างว่า “เร็ว” ที่ล้าสมัยไม่เพียงไม่เป็นประโยชน์ แต่ยังผิดด้วย และเป็นข้อผิดพลาดที่เกิดขึ้นอย่างเงียบๆ
ฉบับย่อ
หัวข้อที่มีชื่อว่า “ฉบับย่อ”- ตัวเลขประสิทธิภาพไร้ความหมายหากปราศจากวิธีการที่ใช้วัด ได้แก่ อินพุต สภาพแวดล้อม จำนวนรอบที่รัน นโยบายการอุ่นเครื่อง และการกระจายตัวของผล
- NextPDF วัดผลด้วยการรันซ้ำหลายรอบ ตัดรอบอุ่นเครื่องออก และรายงานเป็นการกระจายตัว ไม่ใช่ตัวเลขกรณีดีที่สุดเพียงค่าเดียว
- การตรวจหาการถดถอยทำแบบเชิงสถิติ ผลลัพธ์ถูกตัดสินเทียบกับเส้นฐานด้วย Welch’s t-test ดังนั้นการเปลี่ยนแปลงต้องทั้ง มีนัยสำคัญทางสถิติ และ ใหญ่พอที่จะมีความสำคัญ จึงจะนับว่าเป็นการถดถอย
- สภาพแวดล้อมที่ไม่เสถียรจะถูกตรวจพบและรายงาน ไม่ใช่ถูกหาค่าเฉลี่ยกลบไปอย่างเงียบๆ ความแปรปรวนระหว่างรอบที่สูงทำให้ผลลัพธ์เป็นโมฆะแทนที่จะถูกซ่อนอยู่ในค่าเฉลี่ย
- ประสิทธิภาพถูกเผยแพร่เป็นสัญญาณมีชีวิตที่สร้างพร้อมบิลด์ ไม่เคยเป็นพาดหัวที่ถูกตรึงไว้ ซึ่งเป็นเหตุผลว่าทำไมจึงไม่มีตัวเลขมิลลิวินาทีปรากฏบนหน้านี้
วิธีการที่ NextPDF ใช้รับมือกับเรื่องนี้
หัวข้อที่มีชื่อว่า “วิธีการที่ NextPDF ใช้รับมือกับเรื่องนี้”เกตประสิทธิภาพของเอนจินเป็นการทดสอบเชิงสถิติ ไม่ใช่การรันจับเวลาเพียงรอบเดียว ระเบียบวิธีที่บันทึกไว้จะรันชุดทดสอบสำหรับวัดผลหลายครั้ง ตัดรอบอุ่นเครื่องตามจำนวนที่กำหนดไว้ออก แล้วคำนวณค่าเฉลี่ย ส่วนเบี่ยงเบนมาตรฐาน และสัมประสิทธิ์ความแปรผันสำหรับทั้งระยะเวลาและหน่วยความจำ จากนั้นจึงเปรียบเทียบผลลัพธ์ปัจจุบันกับเส้นฐานที่คอมมิตไว้
- 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.
มีคุณสมบัติสามประการที่ทำให้วิธีนี้ตรงไปตรงมา ประการแรก การถดถอยต้องอาศัยสองสิ่งพร้อมกัน คือ นัยสำคัญทางสถิติ (ความแตกต่างไม่น่าจะเป็นสัญญาณรบกวน) และ ขนาดผลกระทบที่เกินเกณฑ์ (ความแตกต่างใหญ่พอที่จะต้องใส่ใจ) ความช้าลงที่เกิดขึ้นจริงแต่เล็กน้อยจะไม่ก่อให้เกิดการแจ้งเตือนผิดพลาด ความช้าลงขนาดใหญ่ในข้อมูลที่มีสัญญาณรบกวนจะไม่ถูกมองข้าม ประการที่สอง ความไม่เสถียรเป็นคำตัดสินประเภทหนึ่ง เมื่อความแปรผันระหว่างรอบเกินขอบเขตที่กำหนด เกตจะรายงานว่าสภาพแวดล้อมเชื่อถือไม่ได้ เกตจะไม่หาค่าเฉลี่ยของสัญญาณรบกวนให้กลายเป็นค่าเฉลี่ยที่ไร้ความหมายแล้วเรียกว่าผ่าน ประการที่สาม ยังคงมีเพดานสัมบูรณ์ ซึ่งเป็นขอบเขตบนแบบเข้มงวดที่ทำให้บิลด์ไม่ผ่านโดยไม่คำนึงถึงสถิติ ด้วยเหตุนี้ “ไม่มีการถดถอยที่มีนัยสำคัญ” จึงไม่สามารถใช้เป็นข้ออ้างให้ผลลัพธ์ที่ช้าเกินไปอยู่แล้วผ่านได้
นี่คือวินัยการวัดผลที่ ISO/IEC 17025 อธิบายไว้สำหรับเมตริกที่น่าเชื่อถือใดๆ คือผลลัพธ์ต้องได้มาภายใต้ เงื่อนไขที่กำหนดไว้ล่วงหน้า ได้แก่ ความทำซ้ำได้ภายในสภาพแวดล้อมเดียว (ISO/IEC 17025, §3.7) และความผลิตซ้ำได้ข้ามสภาพแวดล้อม (ISO/IEC 17025, §3.5) ตัวเลขประสิทธิภาพของ NextPDF มีความหมายก็ต่อเมื่ออยู่ในรูป “วิธีการนี้ เส้นฐานนี้ การรันนี้” เท่านั้น นั่นคือเหตุผลที่ตัวเลขนี้ต้องอยู่กับบิลด์ที่สร้างมันขึ้นมา ไม่ใช่อยู่ในประโยคบนหน้านี้
หลักฐานบ่งชี้อะไร
หัวข้อที่มีชื่อว่า “หลักฐานบ่งชี้อะไร”Evidence: Benchmark-backed เกตการวัดประสิทธิภาพของเอนจิน ใช้การวัดผลซ้ำพร้อมการตัดรอบอุ่นเครื่องออก การสรุปด้วยค่าเฉลี่ย / ส่วนเบี่ยงเบน มาตรฐาน / สัมประสิทธิ์ความแปรผัน และการทดสอบ Welch’s t-test แบบสองตัวอย่างเทียบกับเส้นฐานที่คอมมิตไว้ พร้อมผลลัพธ์ที่ชัดเจนว่าผ่าน / ถดถอย / ไม่เสถียร / เกินเพดานเข้มงวด การวัดประสิทธิภาพยังอยู่ในรูปของ ชุดทดสอบเฉพาะที่รันแยกได้ และฮาร์เนส PHPBench ประสิทธิภาพ ถูกวัดอย่างตั้งใจ ไม่ใช่ประมาณการ
Evidence: Standard-backed “ภายใต้เงื่อนไขที่ระบุไว้” ไม่ใช่ ความระมัดระวังเชิงบรรณาธิการ แต่เป็นนิยาม Spec: ISO/IEC 25010, §3.10 ISO/IEC 25010 §3.10 ผูกโยงประสิทธิภาพการทำงาน เข้ากับเงื่อนไขด้านเวลา ปริมาณงาน และทรัพยากรที่ระบุไว้ ตัวเลขที่ปราศจาก เงื่อนไขไม่ใช่การวัดที่อ่อนกว่า แต่ไม่ใช่การวัดเลย
Evidence: Standard-backed การวางกรอบเรื่องความทำซ้ำได้และ ความผลิตซ้ำได้เป็นไปตาม Spec: ISO/IEC 17025 ISO/IEC 17025 ผลลัพธ์จะน่าเชื่อถือก็ต่อเมื่อ อ้างอิงกับเงื่อนไขที่กำหนดไว้ล่วงหน้าเท่านั้น โดยแยกแยะความทำซ้ำได้ในสภาพแวดล้อมเดียวกัน ออกจากความผลิตซ้ำได้ข้ามสภาพแวดล้อม การวัดประสิทธิภาพที่ไม่สามารถ ระบุเงื่อนไขของตนได้ ก็ไม่อาจกล่าวอ้างทั้งสองอย่างได้
ตัวอย่างเชิงปฏิบัติ
หัวข้อที่มีชื่อว่า “ตัวอย่างเชิงปฏิบัติ”สิ่งที่เรียกว่า “ตรงไปตรงมา” ในทางปฏิบัติคือการระบุวิธีการ ไม่ใช่ตัวเลข
<?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.ผลผลิตของการวัดประสิทธิภาพคือวิธีการที่ทำซ้ำได้และคำตัดสิน ค่ามิลลิวินาทีดิบเป็นของบิลด์ที่สร้างค่านั้นขึ้นมาและคำนวณซ้ำได้จากบิลด์นั้น ไม่ใช่สิ่งที่ควรคัดลอกลงในเอกสารซึ่งทำเช่นนั้นไม่ได้
ความเข้าใจผิดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ความเข้าใจผิดที่พบบ่อย”ความเข้าใจผิดประการแรกคือการคิดว่าการวัดประสิทธิภาพคือตัวเลข การวัดประสิทธิภาพคือ กระบวนการที่ให้ผลเป็นการกระจายตัว ตัวเลขเป็นเพียงค่าหนึ่งที่สุ่มได้จากการกระจายตัวนั้น การรายงานผลที่ดีที่สุดจากหลายรอบ หรือการรันหลังอุ่นเครื่องเพียงรอบเดียว ไม่ใช่การมองโลกในแง่ดี แต่เป็นการวัดสิ่งที่ต่างออกไป (ค่าสูงสุดภายใต้เงื่อนไขในอุดมคติ) แล้วติดป้ายว่าเป็นประสิทธิภาพโดยทั่วไป
ประการที่สองคือการคิดว่า “ไม่มีการถดถอยที่มีนัยสำคัญทางสถิติ” หมายถึง “เร็วเท่าเดิม รับประกันได้” ความหมายที่แท้จริงคือความแตกต่างที่สังเกตได้ยังอยู่ในระดับที่วิธีการนี้แยกออกจากสัญญาณรบกวนไม่ได้อย่างมั่นใจ ภายใต้จำนวนรอบที่รันนี้และความแปรปรวนนี้ นั่นเป็นข้อความที่มีขอบเขตจำกัดและมีเงื่อนไข นี่คือเหตุผลที่ NextPDF คงเพดานสัมบูรณ์ไว้ในฐานะมาตรการป้องกันอิสระ และปฏิเสธที่จะบีบอัดผลลัพธ์ให้เป็นการกล่าวอ้างที่ไม่มีเงื่อนไขกำกับ ไม่ว่าจะเพื่อตนเองหรือเพื่อโจมตีผู้อื่น
ขีดจำกัดและขอบเขต
หัวข้อที่มีชื่อว่า “ขีดจำกัดและขอบเขต”หน้านี้อธิบาย วิธีที่ NextPDF วัดและรายงานประสิทธิภาพ หน้านี้จงใจไม่ระบุตัวเลขปริมาณงาน เวลาแฝง หรือหน่วยความจำใด ค่าเหล่านั้นเป็นสัญญาณมีชีวิตที่สร้างขึ้นจากอาร์ทิแฟกต์ของ continuous integration ภายใต้เงื่อนไขที่ระบุไว้ และค่าปัจจุบันถูกเผยแพร่พร้อมกับบิลด์ ตัวเลขที่นำมาแสดงซ้ำบนหน้านี้จะไม่มีเงื่อนไขกำกับและจะล้าสมัย ซึ่งเป็นความล้มเหลวที่หน้านี้โต้แย้งไว้โดยตรง ไม่มีค่าคงที่ด้านประสิทธิภาพที่เสถียรให้อ้างถึง จึงไม่มีการอ้างถึงเลย วินัยในการวัดคือผลผลิต
จำนวนรอบที่รัน นโยบายการอุ่นเครื่อง เกณฑ์ต่างๆ และเส้นฐานเป็นส่วนหนึ่งของการกำหนดค่าการวัดประสิทธิภาพของเอนจิน และพัฒนาไปพร้อมกับเอนจินและฮาร์ดแวร์ที่ใช้รัน การกำหนดค่านั้นถือเป็นแหล่งอ้างอิงสูงสุดหากมีจุดใดขัดแย้งกับคำอธิบายนี้ NextPDF ไม่เปรียบเทียบประสิทธิภาพกับไลบรารีอื่นใด ไม่ว่าจะในเชิงบวกหรือเชิงลบ เพราะการเปรียบเทียบเช่นนั้นโดยปราศจากเงื่อนไขที่เหมือนกันและระบุไว้ จะเป็นการกล่าวอ้างที่ไม่มีเงื่อนไขกำกับซึ่งหน้านี้มีขึ้นเพื่อปฏิเสธโดยตรง
เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”- Golden-file testing — วินัยด้านความทำซ้ำได้แบบเดียวกันที่นำไปใช้กับความถูกต้องของเอาต์พุต รวมถึงโปรไฟล์แบบ bitwise / เชิงโครงสร้าง / เชิงความหมาย
- พีระมิดการทดสอบของ NextPDF — ชั้นประสิทธิภาพอยู่ตำแหน่งใด และเหตุใดจึงเป็นแบบเลือกเข้าร่วมแทนที่จะรันในทุกการเปลี่ยนแปลง
- Mutation testing, explained — อีกจุดหนึ่งที่ NextPDF รายงานสัญญาณที่ผ่านเกณฑ์แทนตัวเลขเพื่อภาพลักษณ์
อภิธานศัพท์
หัวข้อที่มีชื่อว่า “อภิธานศัพท์”- Benchmark (การวัดประสิทธิภาพ) — กระบวนการที่นิยามไว้ซึ่งให้ผลเป็น การกระจายตัว ของการวัดผลภายใต้เงื่อนไขที่ระบุไว้ ไม่ใช่ตัวเลขเดียว
- Warmup run (การรันอุ่นเครื่อง) — รอบเริ่มต้นที่ถูกตัดออก เพื่อไม่ให้ผลกระทบจากการเริ่มต้นเย็น (JIT, แคช, autoload) ปนเปื้อนผลลัพธ์ที่วัดได้
- Coefficient of variation (สัมประสิทธิ์ความแปรผัน) — ส่วนเบี่ยงเบนมาตรฐานหารด้วยค่าเฉลี่ย เป็นมาตรวัดการกระจายตัวที่ไม่มีหน่วย ใช้ตัดสินว่าการรันเสถียรพอที่จะเชื่อถือได้หรือไม่
- Welch’s t-test — การทดสอบทางสถิติแบบสองตัวอย่างสำหรับความแปรปรวนที่ไม่เท่ากัน ใช้ในที่นี้เพื่อตัดสินว่าผลลัพธ์แตกต่างจากเส้นฐานเกินกว่าสัญญาณรบกวนหรือไม่
- Effect size (ขนาดผลกระทบ) — ขนาดของความแตกต่างที่ไม่ขึ้นกับนัยสำคัญทางสถิติ NextPDF กำหนดให้ต้องมีทั้งสองอย่างก่อนที่จะประกาศว่าเป็นการถดถอย
- Repeatability / reproducibility (ความทำซ้ำได้ / ความผลิตซ้ำได้) — ความสอดคล้องกันของผลลัพธ์ภายใต้เงื่อนไขที่กำหนดไว้ล่วงหน้าในสภาพแวดล้อมเดียว (ความทำซ้ำได้) หรือข้ามสภาพแวดล้อม (ความผลิตซ้ำได้) ตาม ISO/IEC 17025
- Absolute ceiling (เพดานสัมบูรณ์) — ขอบเขตบนแบบเข้มงวดที่ทำให้บิลด์ไม่ผ่านโดยไม่คำนึงถึงการเปรียบเทียบทางสถิติ