Vergleich der Cold-/Warm-Startzeiten von AWS-Lambda-Laufzeiten, 2021/09
(medium.com/@filia-aleks)-
Test der POST-Methode mit dem Flow API-Gateway → AWS Lambda → DynamoDB
-
Test mit jeweils 128/256/512/1024/10240MB Arbeitsspeicher
-
Cold Start
→ Insgesamt ist Rust am schnellsten. Nur bei 128Mb liegt Python auf Platz 1
→ Mit Ausnahme von Java und .NET sind die meisten schnell
→ Java kann mit 128Mb nicht einmal starten, GraalVM jedoch schon
- Warm Start
→ Golang und Rust sind die Gewinner
→ .Net zeigt ebenfalls eine nahezu vergleichbare Leistung wie Go/Rust, aber erst nach 1k wiederholten Ausführungen (nach JIT)
→ GraalVM zeigt ebenfalls eine ähnliche stabile Leistung wie .Net und ist etwas langsamer als Rust/Go. Mit Minimal-Setup funktioniert es nicht gut
→ Java folgt direkt hinter GraalVM. Auch Java liefert seine Leistung wie .Net erst nach 1–3k Wiederholungen
→ Python zeigt eine stabil gute Leistung, ist aber bei 128MB zu langsam
→ Ruby zeigt eine ähnliche Leistung wie Python, aber nach etwa 20 Minuten (15k Wiederholungen) steigt die Laufzeit (duration) leicht an
→ Node.js ist die langsamste Laufzeit. Auch die Laufzeitdauer ist am längsten
-
Betrachtet man Cold + Warm zusammen, sind Golang und Rust die Gewinner. Sie zeigen stets schnelle und stabile Ergebnisse
-
Verglichene Laufzeiten: 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 Kommentare
Ich habe es nur grob überflogen,
aber das Bild mit Rust, Golang ~~ Python und Ruby scheint nicht stark von den allgemeinen Erwartungen abzuweichen ...
Etwas überraschend ist allerdings, dass Java trotz fehlender Kosten für das Hochfahren der VM und trotz JIT langsam ist.
Ich dachte auch, dass Node.js nach dem JIT schnell sei, aber hier kam ein langsames Ergebnis heraus.
Liegt das vielleicht daran, dass sich die Architektur, auf der Lambda läuft, oder der Virtualisierungs-Stack unterscheidet ..
Bei Performance-Tests gibt es einfach zu viele Faktoren, die das Ergebnis beeinflussen können, daher sollte man die Resultate vielleicht nicht allzu ernst nehmen ... haha
Ist golang nicht der Sieger? haha
Ja, es scheint tatsächlich so zu sein.
Ich habe Go zwar noch nicht in einer Cloud-Umgebung eingesetzt, aber ich denke, dass es dafür wie gemacht ist.
Rust ist wirklich unglaublich attraktiv. Ich hatte mir zwar ein Buch gekauft, es aber noch nicht gelesen, doch aus Neugier ist meine Motivation gerade richtig entflammt, haha.