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