4
ค้นหาเลขจำนวนเต็มสองตัวที่ใหญ่ที่สุดในห้าตัวโดยเร็วที่สุด
ฉันใช้รูปแบบของตัวกรองมัธยฐาน 5 ข้ามบนข้อมูลภาพบนระบบฝังตัวขนาดเล็กเช่น x x x x x อัลกอริทึมนั้นง่ายมาก: อ่านค่าจำนวนเต็ม 5 ค่าที่ได้รับ 2 ได้ทำการคำนวณสูงสุดแล้วเขียนผลจำนวนเต็มที่ไม่ได้ลงนาม สิ่งที่ดีคือค่าอินพุตจำนวนเต็ม 5 ค่าทั้งหมดอยู่ในช่วง 0-20 ค่าจำนวนเต็มจากการคำนวณยังอยู่ในช่วง 0-20! จากการทำโปรไฟล์ฉันพบว่าการได้ตัวเลขสองตัวที่ใหญ่ที่สุดคือคอขวดดังนั้นฉันจึงอยากให้ส่วนนี้เร็วขึ้น วิธีที่เร็วที่สุดในการทำการเลือกนี้คืออะไร? อัลกอริทึมปัจจุบันใช้มาสก์ 32 บิตที่มี 1 ในตำแหน่งที่กำหนดโดยตัวเลข 5 ตัวและฟังก์ชั่น CLZ ที่รองรับ HW ฉันควรจะบอกว่าซีพียูเป็นกรรมสิทธิ์ไม่สามารถใช้งานได้นอก บริษัท ของฉัน คอมไพเลอร์ของฉันคือ GCC แต่ปรับแต่งสำหรับ CPU นี้ ฉันลองคิดดูว่าฉันสามารถใช้ตารางการค้นหาได้หรือไม่ แต่ฉันไม่สามารถสร้างรหัสที่ฉันสามารถใช้ได้ ฉันมีรวมกันสำหรับการป้อนข้อมูลการสั่งซื้อ แต่ไม่ได้เป็นสิ่งที่สำคัญคือเป็นเช่นเดียวกับ21521521^5[5,0,0,0,5][5,5,0,0,0] มันเกิดขึ้นว่าฟังก์ชั่นแฮชด้านล่างสร้างแฮชที่สมบูรณ์แบบโดยไม่มีการชน! def hash(x): h = 0 …