Comparação dos tempos de inicialização Cold/Warm por runtime no AWS Lambda 2021/09
(filia-aleks.medium.com)-
Teste do método POST com o fluxo API-Gateway → AWS Lambda → DynamoDB
-
Testes realizados com 128/256/512/1024/10240MB de memória
-
Cold Start
→ No geral, Rust é o mais rápido. Apenas em 128MB o Python fica em 1º lugar
→ Com exceção de Java e .NET, a maioria é rápida
→ Java nem consegue iniciar com 128MB, mas GraalVM consegue
- Warm Start
→ Golang e Rust são os vencedores
→ .Net também mostra desempenho quase igual ao de Go/Rust, mas isso só é possível após 1k execuções repetidas (depois do JIT)
→ GraalVM também mostra desempenho estável semelhante ao do .Net e é um pouco mais lento que Rust/Go. Não funciona bem com a configuração mínima
→ Java vem logo atrás de GraalVM. Assim como o .Net, o Java só entrega desempenho após 1~3k repetições
→ Python mostra um desempenho bom e estável, mas em 128MB é lento demais
→ Ruby mostra desempenho semelhante ao do Python, mas após cerca de 20 minutos (15k repetições) há um pequeno aumento na duração (duration)
→ Node.js é o runtime mais lento. A duração também é a mais longa
-
Considerando Cold + Warm, Golang e Rust são os vencedores. Sempre mostram resultados rápidos e estáveis
-
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 comentários
Eu dei uma olhada por alto,
mas a configuração Rust, Golang ~~ Python, Ruby não parece muito diferente do que geralmente se espera...
É um pouco surpreendente que o Java seja lento mesmo sem o custo de subir a VM e mesmo com JIT aplicado.
Eu também achava que o Node.js ficaria rápido depois do JIT, mas o resultado saiu lento.
Será que isso acontece porque a arquitetura em que o Lambda roda ou a pilha de virtualização são diferentes...?
Há tantos fatores que podem influenciar testes de desempenho que talvez não seja necessário levar esses resultados tão a sério... hahaha
Será que Go não é o vencedor? haha
Sim, parece mesmo esse tipo de resultado.
Não usei golang em ambiente de nuvem, mas tenho a impressão de que ele combina perfeitamente com esse tipo de ambiente.
Rust é tão atraente. Eu tinha comprado o livro e não estava lendo, mas isso acendeu muito a minha curiosidade haha