เปรียบเทียบเวลาเริ่มต้นแบบ Cold/Warm ของ AWS Lambda ตามแต่ละรันไทม์ 2021/09
(filia-aleks.medium.com)-
ทดสอบเมธอด POST ด้วยโฟลว์ API-Gateway → AWS Lambda → DynamoDB
-
ทดสอบหน่วยความจำที่ 128/256/512/1024/10240MB ตามลำดับ
-
Cold Start
→ โดยรวมแล้ว Rust เร็วที่สุด และมีเพียงที่ 128Mb เท่านั้นที่ Python ได้อันดับ 1
→ ยกเว้น Java และ .NET แล้ว ส่วนใหญ่ทำงานได้เร็ว
→ Java ไม่สามารถเริ่มต้นได้เลยที่ 128Mb แต่ GraalVM ทำได้
- Warm Start
→ Golang และ Rust คือผู้ชนะ
→ .Net ก็แสดงประสิทธิภาพใกล้เคียงกับ Go/Rust มาก แต่ทำได้หลังจากรันซ้ำ 1k ครั้งเท่านั้น (หลัง JIT)
→ GraalVM ก็แสดงประสิทธิภาพที่เสถียรคล้าย .Net และช้ากว่า Rust/Go เล็กน้อย แต่ทำงานได้ไม่ดีในเซ็ตอัปขั้นต่ำ
→ Java ตามหลัง GraalVM มาทันที และเช่นเดียวกับ .Net Java จะได้ประสิทธิภาพหลังจากรันซ้ำ 1~3k ครั้งเท่านั้น
→ Python แสดงประสิทธิภาพที่ดีและเสถียร แต่ที่ 128MB ช้าเกินไป
→ Ruby มีประสิทธิภาพคล้าย Python แต่หลังจากผ่านไปราว 20 นาที (รันซ้ำ 15k ครั้ง) จะมี duration เพิ่มขึ้นเล็กน้อย
→ Node.js เป็นรันไทม์ที่ช้าที่สุด และมี duration ยาวที่สุดด้วย
-
เมื่อดูทั้ง Cold + Warm แล้ว Golang และ Rust คือผู้ชนะ โดยให้ผลลัพธ์ที่เร็วและเสถียรเสมอ
-
รันไทม์ที่นำมาเปรียบเทียบ: NodeJs(14.x), Python(3.9), Go(1.x), Ruby(2.7), .Net(3.1), Java (11), Rust(1.54.0), GraalVM(21.2)
5 ความคิดเห็น
ผมดูผ่าน ๆ มาแล้วเหมือนกัน แต่ดูแล้วภาพรวมแบบ Rust, Golang ~~ Python, Ruby ก็คงไม่ได้ต่างจากที่คาดกันทั่วไปมากนัก...
แต่ที่ Java ไม่มีต้นทุนในการสตาร์ต VM และถึงจะมีการใช้ JIT แล้วก็ยังช้าอยู่ ก็ค่อนข้างน่าแปลกใจนิดหน่อยครับ
Node.js เองผมก็คิดว่าหลัง JIT แล้วน่าจะเร็ว แต่ผลกลับออกมาช้าเหมือนกัน
หรือว่าเป็นเพราะสถาปัตยกรรมที่ Lambda ใช้งานอยู่ หรือพวก virtualization stack มันต่างกันหรือเปล่านะ..
มีปัจจัยที่อาจส่งผลต่อการทดสอบประสิทธิภาพอยู่มากพอสมควร ดังนั้นก็คงไม่จำเป็นต้องตีความผลลัพธ์นี้อย่างจริงจังเกินไปนัก... 555
golang น่าจะเป็นผู้ชนะไหมครับ? 555
ครับ ดูเหมือนว่าจะได้ผลลัพธ์แบบนั้นนะครับ
แม้ผมจะยังไม่เคยใช้ golang ในสภาพแวดล้อมคลาวด์ แต่ก็รู้สึกว่ามันเหมาะกับสภาพแวดล้อมคลาวด์มากเลยครับ
Rust น่าสนใจมากจริง ๆ ครับ ผมซื้อหนังสือไว้แล้วแต่ยังไม่ได้อ่านเลย แต่ความอยากรู้อยากเห็นถูกจุดขึ้นมาเต็ม ๆ เลยครับ 555