เห็นว่า 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 ดังนี้
[gist id="ca06a4e9cdf8a195ecf056b9c61a3408" file="lib.rs"]ทำการ build จะได้ไฟล์นามสกุล dylib ใน folder target/release
[gist id="ca06a4e9cdf8a195ecf056b9c61a3408" file="1.txt"]ขั้นตอนที่ 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