AWS Lambda battle: x86 vs ARM(Graviton2)

Aleksandr Filichkin
4 min readNov 5, 2021

As you may know, just a month ago AWS announced AWS Graviton2 Processors for AWS Lambda and says that AWS Lambda functions using the Arm/Graviton2 architecture provide up to 34 percent price-performance improvement.

In this article, we are going to check what real price-performance improvement we can see for the most common lambda use-case.

This article is a continuation of my previous article AWS Lambda battle 2021: performance comparison for all languages (cold and warm start)

Thank you so much to everyone who contributes to https://github.com/Aleksandr-Filichkin/aws-lambda-runtimes-performance. As you will see we significantly improved performance for NodeJs https://github.com/Aleksandr-Filichkin/aws-lambda-runtimes-performance/pull/6

Disclaimer:

All benchmarks were performed in November 2021

I’m not an expert in all these languages and I’m happy to see MR in GitHub repo with performance improvements. I’m going to support these repo and run the perfomance test every 3 months. I believe in opensource collaboration :)

Test scenario

We are going to compare performance for ARM and x86 for cold and warm states for all supported runtimes + Rust and Graalvm:

  • NodeJs (14.x)
  • Python (3.9)
  • Go(1.x)
  • Ruby(2.7)
  • .Net(3.1)
  • Java (11)
  • Rust(1.54.0)
  • GraalVM(21.3)

All source code is here: https://github.com/Aleksandr-Filichkin/aws-lambda-runtimes-performance

We are going to test API-Gateway -> AWS Lambda->DynamoDb flow.

We will test only POST endpoint which will save the book into the DynamoDb table in the known AWS region(us-east-2).

Cold start

Cold start per runtime

Warm state