24
เรียงลำดับที่เร็วที่สุดของอาร์เรย์ความยาวคงที่ 6 int
ตอบคำถาม Stack Overflow (อันนี้ ) ฉันพบปัญหาย่อยที่น่าสนใจ วิธีที่เร็วที่สุดในการจัดเรียงอาร์เรย์ของ 6 จำนวนเต็มคืออะไร? เนื่องจากคำถามอยู่ในระดับต่ำมาก: เราไม่สามารถสมมติว่ามีไลบรารี (และการโทรเองมีค่าใช้จ่าย) เพียงธรรมดา C เพื่อหลีกเลี่ยงการล้างท่อส่งคำสั่ง (ที่มีค่าใช้จ่ายสูงมาก ) เราควรจะลดกิ่งกระโดดและการควบคุมการไหลอื่น ๆ ทุกชนิด (เช่นที่ซ่อนอยู่หลังจุดลำดับใน&&หรือ||) ห้องมีข้อ จำกัด และการลดการลงทะเบียนและการใช้หน่วยความจำก็เป็นปัญหา คำถามนี้เป็นคำถามประเภทกอล์ฟที่เป้าหมายไม่ได้ลดความยาวของแหล่งที่มา แต่ลดระยะเวลาดำเนินการลง ผมเรียกรหัสมัน Zening 'ที่ใช้ในชื่อของหนังสือเล่มนี้เซนของการเพิ่มประสิทธิภาพรหัสโดยไมเคิล Abrashและต่อมา ทำไมมันถึงน่าสนใจมีหลายเลเยอร์: ตัวอย่างนั้นง่ายและเข้าใจง่ายและวัดผลไม่เกี่ยวข้องกับทักษะ C มากนัก มันแสดงผลของการเลือกอัลกอริทึมที่ดีสำหรับปัญหา แต่ยังมีผลกระทบของคอมไพเลอร์และฮาร์ดแวร์พื้นฐาน นี่คือการดำเนินการอ้างอิงของฉัน (ไร้เดียงสาไม่เหมาะ) และชุดทดสอบของฉัน #include <stdio.h> static __inline__ int sort6(int * d){ char j, i, …