งงกันมั้ย?
ผมเขียนโปรแกรมนึง ซึ่งทำงานแบบ Multi Threading
โดยทั้ง 2 Thread จะ while เพื่อนับรอบ Loop เป็นเวลา 5 วินาที
และนำรอบทั้งหมดมาหาร 5 (หารอบต่อวินาที)
ทดสอบบนเครื่อง CPU 1 Core (รัน 1 Thread)
ROPs: 132332990.8 Rps
ทดสอบบนเครื่อง CPU 1 Core (รัน 2 Thread)
Thread1 ROPs: 70476239.4 Rps
Thread2 ROPs: 72902260.6 Rps
ต่อไป มาทดสอบอีกเครื่องกันนะครับ (เครื่องนี้ค่อนข้างแรงกว่าเครื่องแรก)
ทดสอบบนเครื่อง CPU 4 Core (รัน 1 Thread)
ROPs: 192289914 Rps
ทดสอบบนเครื่อง CPU 4 Core (รัน 2 Thread)
Thread1 ROPs: 38434024.6 Rps
Thread2 ROPs: 38854396.6 Rps
ทดสอบบนเครื่อง CPU 4 Core (รัน 2 Thread + Affinity only CPU 0)
Thread1 ROPs: 83144022.2 Rps
Thread2 ROPs: 69798122.2 Rps
งงกันมั้ยครับ? ว่าทำไม 2 Thread แบบกระจายการประมวลผลไปทุก Core ถึงทำงานช้ากว่า แบบ 2 Thread แต่กระจุกอยู่แค่ Core เดียว??
ผมก็งงครับ
หมายเหตุ: Rps = Rop per second หรือ รอบต่อวินาที
ใส่ความเห็น
คุณต้องเข้าสู่ระบบ เพื่อจะพิมพ์ความเห็น