Comparación de tiempos de inicio Cold/Warm por runtime de AWS Lambda 2021/09
(medium.com/@filia-aleks)-
Se probó el método POST con el flujo API-Gateway → AWS Lambda → DynamoDB
-
Se probaron por separado memorias de 128/256/512/1024/10240MB
-
Cold Start
→ En general, Rust fue el más rápido. Solo en 128Mb Python quedó en primer lugar
→ Excepto Java y .NET, la mayoría fueron rápidos
→ Java ni siquiera puede iniciar con 128Mb, pero con GraalVM sí es posible
- Warm Start
→ Golang y Rust fueron los ganadores
→ .Net también muestra un rendimiento casi igual al de Go/Rust, pero solo después de 1k ejecuciones repetidas (tras el JIT)
→ GraalVM también muestra un rendimiento estable similar al de .Net, y es un poco más lento que Rust/Go. No funciona bien con la configuración mínima
→ Java queda justo detrás de GraalVM. Java también, como .Net, solo muestra rendimiento después de 1~3k repeticiones
→ Python muestra un rendimiento bueno y estable, pero en 128MB es demasiado lento
→ Ruby muestra un rendimiento similar al de Python, pero después de unos 20 minutos (15k repeticiones) aumenta un poco la duración (duration)
→ Node.js es el runtime más lento. También tiene la mayor duración
-
Considerando Cold + Warm, Golang y Rust son los ganadores. Siempre muestran resultados rápidos y estables
-
Runtimes comparados: 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 comentarios
Lo vi por encima, pero...
La idea de Rust, Golang ~~ Python y Ruby no parece muy distinta de lo que normalmente se esperaría...
Sí me resulta un poco inesperado que Java sea lento incluso sin el costo de levantar la VM y aun con JIT aplicado.
También pensaba que Node.js sería rápido después del JIT, pero salió un resultado lento.
¿Será porque la arquitectura en la que corre Lambda o la pila de virtualización son distintas...?
Supongo que tampoco hace falta tomarse los resultados demasiado en serio, porque hay demasiados factores que pueden afectar una prueba de rendimiento... jajaja
¿No será que Go es el ganador? jaja
Sí, parece que ese es el resultado.
No he probado usar golang en un entorno de nube, pero me da la impresión de que encaja perfectamente con ese tipo de entorno.
Rust es demasiado atractivo. Había comprado el libro y no lo había leído, pero por curiosidad se me encendieron muchísimo las ganas jaja.