ฉันพบว่านาฬิกาปกติ () ทุกคนแนะนำที่นี่ด้วยเหตุผลบางอย่างเบี่ยงเบนอย่างรุนแรงจากการทำงานเพื่อเรียกใช้แม้สำหรับรหัสคงที่ไม่มีผลข้างเคียงใด ๆ เช่นการวาดภาพไปที่หน้าจอหรือการอ่านไฟล์ อาจเป็นเพราะ CPU เปลี่ยนโหมดการใช้พลังงานระบบปฏิบัติการที่ให้ความสำคัญต่างกัน ฯลฯ
ดังนั้นวิธีเดียวที่จะได้ผลลัพธ์เดียวกันอย่างน่าเชื่อถือทุกครั้งที่มีนาฬิกา () คือการเรียกใช้โค้ดที่วัดได้ในลูปหลาย ๆ ครั้ง (เป็นเวลาหลายนาที) การระมัดระวังเพื่อป้องกันคอมไพเลอร์จากการปรับมันออก: คอมไพเลอร์สมัยใหม่ ไม่มีผลข้างเคียงที่ทำงานในลูปและย้ายออกจากลูปเช่นใช้การสุ่มอินพุตสำหรับการวนซ้ำแต่ละครั้ง
หลังจากเก็บตัวอย่างเพียงพอไปยังอาร์เรย์หนึ่งประเภทนั้นจะเรียงลำดับและใช้องค์ประกอบกลางเรียกว่ามัธยฐาน ค่ามัธยฐานนั้นดีกว่าค่าเฉลี่ยเพราะมันเบี่ยงเบนความเบี่ยงเบนอย่างสุดขั้วออกไปเช่นบอกว่าการป้องกันไวรัสทำให้ CPU ทั้งหมดหรือระบบปฏิบัติการทำการอัพเดท
นี่คือยูทิลิตี้ง่าย ๆ ในการวัดประสิทธิภาพการทำงานของรหัส C / C ++ โดยเฉลี่ยค่าใกล้กับค่ามัธยฐาน: https://github.com/saniv/gauge
ฉันเองยังคงมองหาวิธีที่แข็งแกร่งและเร็วกว่าในการวัดโค้ด หนึ่งอาจลองใช้รหัสในสภาพควบคุมบนโลหะเปลือยโดยไม่มีระบบปฏิบัติการใด ๆ แต่ที่จะให้ผลลัพธ์ที่ไม่สมจริงเพราะในความเป็นจริงระบบปฏิบัติการจะมีส่วนร่วม
x86 มีตัวนับประสิทธิภาพของฮาร์ดแวร์เหล่านี้ซึ่งรวมถึงจำนวนคำสั่งที่เรียกใช้จริง แต่ทำได้ยากหากต้องการเข้าถึงโดยไม่ต้องใช้ระบบปฏิบัติการช่วยเหลือยากที่จะตีความและมีปัญหาของตัวเอง ( http://archive.gamedev.net/archive/reference/articles/articles) /article213.html ) ถึงกระนั้นก็อาจเป็นประโยชน์ในการตรวจสอบลักษณะของคอขวด (การเข้าถึงข้อมูลหรือการคำนวณจริงในข้อมูลนั้น)