Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ว่าง ๆ มาลองเขียน Node.js ทำงานร่วมกับ Rust

$
0
0

เห็นว่า 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 และใช้งาน ดังนี้

[gist id="ca06a4e9cdf8a195ecf056b9c61a3408" file="app.js"]

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

[gist id="ca06a4e9cdf8a195ecf056b9c61a3408" file="2.txt"]

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

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


Viewing all articles
Browse latest Browse all 1997

Trending Articles