- บทความที่สำรวจโอกาสในการปรับแต่งลูปของโค้ด C ที่สร้างโดย Clang
- ลูปจะเพิ่มหรือลดค่าตัวเลขตามอักขระในสตริง
- ผู้เขียนจัดเรียงลูปใหม่เพื่อปรับแต่งให้เหมาะกับอักขระ 'p' และ 's' แทน null terminator
- ผู้เขียนลบการแตกแขนงตามเงื่อนไขโดยใช้เลขคณิตและ conditional move
- โค้ดที่ปรับแต่งแล้วทำความเร็วได้ดีขึ้นอย่างมากถึง 6.73 เท่าเมื่อเทียบกับโค้ดเดิม
- ผู้เขียนยังทดลองเทคนิคการปรับแต่งอื่น ๆ แต่พบว่ากลับทำให้โค้ดช้าลง
- การตั้งค่าสำหรับการทำเบนช์มาร์กรวมถึง CPU AMD Ryzen 5 5625U และ Clang กับ GCC เวอร์ชันล่าสุด
- บทสรุปคือการเขียนและปรับแต่งด้วยมือในระดับแอสเซมบลีสามารถนำไปสู่การเพิ่มความเร็วอย่างมากได้ในบางกรณี
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ifแทนswitchsete/cmovและสามารถทำความเร็วได้เท่ากับโค้ดแอสเซมบลีที่ปรับแต่งแล้ว