การเกิดขึ้นของภาษา Rust ที่เป็น memory-safety ทำให้เราค่อยๆ เห็นกระบวนการเปลี่ยนผ่านไลบรารีหรือเครื่องมือพื้นฐานที่เดิมเขียนด้วย C/C++ มาเป็น Rust ซึ่งเหนือกว่าด้วยเหตุผลด้านความปลอดภัย และบางครั้งอาจมีประสิทธิภาพเพิ่มขึ้นด้วย
Sergey Davidoff หรือ Shnatsel นักพัฒนาภาษา Rust ได้ทดสอบไลบรารีถอดรหัสไฟล์ภาพ PNG แบบดั้งเดิม (libpng, spng, stb_image) กับไลบรารียุคใหม่ที่เขียนด้วย Rust (png ในชุด image-rs, zune-png, wuffs) พบว่าไลบรารียุคใหม่มีประสิทธิภาพดีกว่ายุคก่อนถึง 1.8 เท่า (x86) และ 1.5 เท่า (Arm)
เหตุผลที่ไลบรารี Rust ให้ประสิทธิภาพดีกว่า มาจากการเป็นไลบรารียุคใหม่ๆ มีเทคนิคด้านอัลกอริทึมที่มีประสิทธิภาพมากกว่า ทำให้สามารถคลาย (deflate) และใส่ฟิลเตอร์ (filtering) ภาพจากการบีบอัดแบบ PNG ได้เร็วกว่า รายละเอียดอ่านได้จากที่มา
ไลบรารีภาพ Rust ทั้งสามตัวถูกใช้งานในระดับโปรดักชันมาพอสมควรแล้ว และน่าจะแพร่หลายขึ้นเรื่อยๆ ในอีกไม่ช้า
Comments
ถ้า rewrite/refactor program แล้วยังได้ performance/feature เท่าเดิม ก็อย่าทำเลยดีกว่า
ไม่ว่าภาษาไหน
ถ้าภาษาที่สามารถ access memory ได้ตรงๆ แล้ว
program จะช้าหรือเร็วมันไม่ได้อยู่ที่ภาษาแล้วล่ะครับ
อยู่ที่ algorithm/ program design มากว่า
ส่วน standard library นั้นมีผลไม่มากเท่า
ภาษามีผลแน่นอน ในภาษามีกลไกที่ทำให้ภาษาต่างๆ มีความต่างกัน ซึ่งกลไกเหล่านั้นจะละทิ้งไม่ได้ แม้จะสามารถ access memory ได้ตรงๆ เพราะคอมไพเลอร์เป็นคนทำให้
ใช้ Zlib เหมือน libpng หรือว่าเขียนใหม่ล่ะครับนั่น
ถ้าไม่เอา full feature เขียนเอง (ลอก algorithm คนอื่นมาแก้) ก็ไม่ได้ยากเย็นครับ
deflate
/me แอบ show ของตัวเอง
แล้วเทคนิคด้านอัลกอริทึมใช้กับภาษาเก่าไม่ได้เหรอ?
ผมว่า คห.1 เขาพูดถูกอยู่นะ ถ้าลงไปต่ำกว่า C ก็เป็นระดับ CPU instructions แล้วล่ะ (ภาษา assembly) ก็ optimize ผ่าน driver หรือ stdlib อะไรก็ว่าไป
แน่นอน compiler ไม่ลงไปลึกกว่านี้แล้ว
ได้ฮะ แต่น่าจะมาจากหลายเหตุ
เข้าใจว่าจริง ๆ libpng ไม่ได้ใช้ decompression ของตัวเอง แต่ไปใช้ zlib เป็นตัวบีบ-คลาย
ให้ผมเดา rust น่าจะใช้ async io หรือเปล่านะครับ? คิดว่า libpng หรือ stb มันไม่มีส่วน async นะ (กดไกภาษามันไม่มีถ้าจะเขียนก็วุ่นวาย) คือไม่แน่ว่าถ้า benchmark กันบน memory อาจจะไม่แพ้เยอะมากก็ได้
edit: ไปดูต้นทางมาแล้ว เค้าเร็วขึ้นเพราะใช้ SIMD ครับ ไม่เกี่ยวกับภาษา
ตอนนี้มีอุตสาหกรรมไหนที่ใช้ Rust แบบเยอะๆแล้วรึยังครับ
เหมือน Rust ค่อยๆเติบโตจาก library, dev tools หรือ core ของหลายๆผลิตภัณฑ์ ซึ่งอยู่ในองค์กรใหญ่ๆ ที่มีคนเก่งเยอะ ซึ่งคนกลุ่มนี้แทบจะใช้ภาษาอะไรก็ได้ในการพัฒนา ทำให้อัตราการจ้างงาน Rust programmer เพิ่มเติมเติบโตค่อนข้างช้า
..: เรื่อยไป
ก็มีการผลักดันกันพอสมควรแต่ด้วยความ SM ของภาษา ... อ่ะแฮ่ม ด้วยความที่มันออกแบบมาเป็นภาษาทดแทนภาษา C ผมว่ามันต้องใช้เวลาพอสมควร + หลาย ๆ ที่มันไม่ได้มีโค๊ดระดับต่ำขนาดนั้น
ไปดู Phoronix มาละ คนด่ากระจ่ายเช่นเดิม (ฮา)
เท่าที่อ่านผ่าน ๆ เหมือนกับว่า lib ตัวที่ว่าเร็วกว่าเค้าใช้ SIMD ซึ่ง lib ฝั่ง C ไม่ได้ใช้ (อย่าง stb เค้าเน้น portability เลยไม่ได้ใช้)
แต่กระแส Anti-Woke ... เอ๊ย กระแส Anti-Rust แรงมากในนั้น อาจจะด้วยความที่มิชชันนารีปูแดงค่อนข้าง aggressive ก็เลยโดนสวนแบบ aggressive กลับเยอะอยู่ครับ เข้าไปอ่านต้องปิดตาข้างนึงด้วยนะ