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