เจาะลึกทดสอบ Password Hashing ข้ามสถาปัตยกรรม
เปรียบเทียบผลทดสอบ PBKDF2 บน Macbook Pro M4 Pro และ AMD Ryzen 9 9950X เผยความต่างด้านภาษาโปรแกรมและฮาร์ดแวร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การพัฒนาบนเครื่องใหม่แต่รันบนคลาวด์อาจให้ผลลัพธ์ต่างกัน
- ทดสอบ PBKDF2 ด้วยเกลือ 16 ไบต์ และความลับ 64 ไบต์ที่ 5 แสนรอบ
- ชิป Apple M-series ทำความเร็วได้ดีกว่าในงานแฮชรหัสผ่าน
- การเลือกใช้ Crate ในภาษา Rust ส่งผลต่อประสิทธิภาพอย่างชัดเจน
การพัฒนาซอฟต์แวร์ในปัจจุบันมักทำบนเครื่องแล็ปท็อปประสิทธิภาพสูงรุ่นใหม่ล่าสุด แต่ในความเป็นจริง โค้ดเหล่านั้นอาจต้องไปรันบนสภาพแวดล้อมบนคลาวด์ที่มีสถาปัตยกรรมแตกต่างออกไป ซึ่งความแตกต่างของฮาร์ดแวร์นี้เป็นประเด็นที่นักพัฒนาหลายคนมองข้าม
บทความจาก Dev.to ได้เผยแพร่การทดลองเปรียบเทียบประสิทธิภาพการแฮชรหัสผ่าน (Password Hashing) ข้ามสถาปัตยกรรมฮาร์ดแวร์และภาษาโปรแกรมที่หลากหลาย โดยใช้ขั้นตอนวิธี PBKDF2 ร่วมกับอัลกอริทึม SHA256 กำหนดค่าความยาว Salt ไว้ที่ 16 ไบต์ ความยาว Secret ที่ 64 ไบต์ และตั้งค่ารอบการทำงาน (Iterations) ไว้ที่ 500,000 รอบ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
สำหรับการทดสอบได้สร้างแอปพลิเคชันเดโมในโหมดจำกัดประสิทธิภาพสูงสุด ได้แก่ ภาษา Rust สร้างในโหมด release mode, ภาษา Odin ใช้แฟล็ก -o:speed และภาษา Zig ใช้แฟล็ก -D ReleaseSafe โดยทดสอบบนฮาร์ดแวร์สองชุดหลักคือ Macbook Pro M4 Pro (MacOS 15.7.5) และ AMD Ryzen 9 9950X (CachyOS, Linux Kernel 7.1.8)
ผลการทดสอบค่าเฉลี่ยจากการรันหลายครั้งบน Macbook Pro M4 Pro พบว่า Rust (aws-lc-rs crate) ใช้เวลา 66 มิลลิวินาที, Rust (ring crate) ใช้เวลา 103 มิลลิวินาที, Odin (dev-2026-08) ใช้เวลา 98 มิลลิวินาที และ Zig (0.16) ใช้เวลา 103 มิลลิวินาที
ในขณะที่ผลการทดสอบบน AMD Ryzen 9 9950X พบว่า Rust (aws-lc-rs crate) ใช้เวลา 93 มิลลิวินาที, Rust (ring crate) ใช้เวลา 140 มิลลิวินาที, Odin (dev-2026-08) ใช้เวลา 123 มิลลิวินาที และ Zig (0.16) ใช้เวลา 171 มิลลิวินาที ซึ่งชี้ให้เห็นว่าชิปตระกูล M จาก Apple มีความได้เปรียบในงานลักษณะนี้
การทดสอบนี้สะท้อนให้เห็นว่านักพัฒนาไม่ควรอนุมานว่าโค้ดที่รันได้เร็วบนเครื่องเดสก์ท็อปส่วนตัว จะมีประสิทธิภาพเท่ากันเมื่อนำไป deploy บนเซิร์ฟเวอร์จริง เนื่องจากสถาปัตยกรรมซีพียูที่ต่างกัน รวมถึงการเลือกใช้ไลบรารี (Crate) ที่ต่างกันในภาษาเดียวกัน เช่น aws-lc-rs เทียบกับ ring ในภาษา Rust ก็สร้างความแตกต่างด้านความเร็วอย่างมีนัยสำคัญ ซึ่งอาจส่งผลต่อความสามารถในการเพิ่มจำนวนรอบแฮชเพื่อความปลอดภัยที่สูงขึ้นได้
แม้ว่านักพัฒนาหลายคนอาจไม่มีเครื่องมือหรือฮาร์ดแวร์หลากหลายรุ่นไว้คอยทดสอบ แต่การตระหนักรู้ว่าฮาร์ดแวร์ที่ใช้งานจริงในระบบ Production อาจเก่ากว่าเครื่องที่ใช้พัฒนา ถือเป็นสิ่งสำคัญ โดยเฉพาะงานที่มีการประมวลผลหนักหน่วงและอาจบล็อกการทำงานบนเซิร์ฟเวอร์ การทดสอบบนสภาพแวดล้อมจริงจึงยังคงเป็นแนวทางที่ดีที่สุด
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น