การวิเคราะห์ผลกระทบของคีย์เวิร์ดสุดท้ายต่อประสิทธิภาพของโปรแกรม C++

Benjamin Summerton ผู้เขียนระบบติดตามรังสี PSRayTracing ได้วิเคราะห์ผลกระทบต่อประสิทธิภาพการทำงานของแอปพลิเคชันโดยใช้คีย์เวิร์ด "สุดท้าย" ซึ่งปรากฏในมาตรฐาน C++11 ในโค้ด C++ เหตุผลในการทดสอบคือ มีการกล่าวอ้างที่ลอยอยู่ทั่วอินเทอร์เน็ตว่าการใช้ "ขั้นสุดท้าย" จะช่วยปรับปรุงประสิทธิภาพ ซึ่งจำกัดอยู่เพียงการตัดสินที่มีคุณค่าโดยไม่ระบุผลลัพธ์ของการเปลี่ยนแปลง

การทดสอบของเบนจามินแสดงให้เห็นว่าประสิทธิภาพเมื่อใช้ "สุดท้าย" นั้นขึ้นอยู่กับคอมไพเลอร์เป็นอย่างมาก เมื่อสร้างใน GCC ประสิทธิภาพเพิ่มขึ้นจริง ๆ ในหลายกรณีที่เห็นได้ชัดเจน แต่เมื่อสร้างใน Clang และ MSVC ประสิทธิภาพในกรณีส่วนใหญ่ลดลง และเห็นได้ชัดเจนยิ่งขึ้น ในเวลาเดียวกัน นอกเหนือจากคอมไพเลอร์แล้ว แพลตฟอร์มยังมีอิทธิพลอย่างมาก เช่น ประสิทธิภาพที่ลดลงนั้นเด่นชัดบนระบบที่ใช้ CPU AMD Ryzen 9 6900HX มากกว่าบนระบบที่ใช้ CPU Apple M1

การวิเคราะห์ผลกระทบของคีย์เวิร์ดสุดท้ายต่อประสิทธิภาพของโปรแกรม C++
การวิเคราะห์ผลกระทบของคีย์เวิร์ดสุดท้ายต่อประสิทธิภาพของโปรแกรม C++

ตัวอย่างเช่น ในระบบ AMD Ryzen 9 6900HX พร้อม Ubuntu 23.10 เมื่อสร้างด้วย Clang การทดสอบ 90% เมื่อใช้ "ขั้นสุดท้าย" แสดงการชะลอตัวอย่างน้อย 5% แต่ในกรณี 2.5% การเร่งความเร็วอย่างน้อย 5% ถูกบันทึกไว้ สำหรับ GCC การชะลอตัว 5% ได้รับการบันทึกไว้ใน 0.9% ของกรณี และการเร่งความเร็ว 5% ใน 15.8% ของกรณี ใน MSVC พบว่ามีการชะลอตัว 5% ในการทดสอบ 26.2% และการเร่งความเร็ว 5% ถูกพบใน 13.3% สำหรับตัวเขาเองผู้เขียนงานวิจัยสรุปว่าจำเป็นต้องหลีกเลี่ยงการใช้คำว่า "ขั้นสุดท้าย"

ที่มา: opennet.ru

เพิ่มความคิดเห็น