Big O is lying to you. CPU cacheline is all that matter

เคยสงสัยไหมครับว่าทำไม algorithm บางตัวถึงรันได้เร็วกว่าอีกอัน แม้จริงๆมันจะมี big o ที่แย่กว่า Introduction ปกติแล้วใน course Data Structure and Algorithm จะพูดถึงเรื่อง Asymptotic complexity หรือ Big O notation ว่า algorithm นั้นๆว่ามีความซับซ้อนเท่าไรในแง่ของ time and space ที่ใช้ แต่่สวนนึงที่ไม่ค่อยได้พูดถึงกันก็ตือ notation อันนี้หมายถึง growth ของตัว algorithm นั้นๆด้วย ซึ่งทำให้เวลาที่เราเทียบว่า algorithm ไหนดีกว่า เราตัดหลายๆส่วนที่สำคัญออกไป เช่นค่า constant บางอย่างหรือแม้กระทั่ง hardware model ที่ถูก abstract ว่าไม่มีผลอะไร ผลลัพธ์ก็คือตอนที่เราเอาของไปรันจริงๆ มันทำงานได้ดันช้ากว่าซะได้ Memory Hierarchy ทั่วไปแล้วเราจะมี model ในหัวว่า CPU มี L1/L2/L3, RAM และ cost ในการเข้าถึง data ต่างๆที่อยู่ในแต่ละที่นั้นใกล้ๆเคียงกัน แต่ความจริงแล้วมันไม่ใช่เลย เราจะเห็นได้ว่า cost ในการ access memory ส่วนต่างๆที่ยิ่งไกลออกไปนั้นมันจะสูงขึ้นอย่างเร็ว (อย่างเช่นใน diagram) ...

April 13, 2026