เห็นว่า Deno นั้นพัฒนาด้วยภาษา Rust
แต่ก็ยังเขียน code ด้วยภาษา JavaScript ได้
ก็เลยอยากลองดูว่า
ถ้าเราเขียน Node.js โดยใช้ library/module ที่พัฒนาด้วยภาษา Rust แล้ว
มันน่าเร็วขึ้นกว่าเดิมไม่น้อย
ก็เลยลองค้นหาตัวอย่างและลองพัฒนาเล่น ๆ ดูหน่อย
มาเริ่มกันเลย

Software ที่ใช้ในการพัฒนา

  • MacOS
  • Rust และ Cargo สำหรับสร้าง library โดยผลที่ได้คือ Dynamic library (ไฟล์นามสกุล dylib)
  • Node.js version 10 กับ FFI module (Foreign Function Interface) สำหรับ load Dynamic library ที่ได้จาก Rust

ปล. FFI module ทำงานได้กับ Node.js version 10 เท่านั้น ส่วน 12 และ 14 ใช้งานไม่ได้

ขั้นตอนที่ 1 เริ่มด้วยการสร้าง library ใน Rust ดังนี้

ทำการ build จะได้ไฟล์นามสกุล dylib ใน folder target/release

ขั้นตอนที่ 2 พัฒนาระบบด้วย Node.js version 10 เท่านั้น

พร้อมทั้งติดตั้ง FFI module ไปด้วย เขียน code
เพื่อ load dynamic library และใช้งาน ดังนี้

ทำการ run เพื่อดูผล จะเห็นว่า
การใช้ Dynamic library ที่สร้างด้วยภาษา rust นั้น
ทำงานเร็วกว่าถึง 6 เท่า

เป็นผลลัพธ์ที่น่าสนใจมาก ๆ
ลองศึกษากันดูครับ สนุกดี

Source code ตัวอย่างอยู่ที่ GitHub:Up1

Reference Websites

https://medium.com/paloit/speed-up-your-javascript-with-rust-7661922562fa
https://medium.com/@vinicius.ld/how-to-generate-a-webassembly-module-using-rust-and-node-js-e365d5157df