This repo contains a microbenchmark that collects the compile time, startup time, memory usage, and load time of simple "Hello World"-like apps in Spring, Quarkus, Micronaut, and Helidon.
As always, you should do your own experimentation using samples that represent your real application.
This is an adaptation of Matthias Graf’s original work.
This original work led to responses from the project maintainers, worth a view!
Make sure you do all of the Prerequisites first!
To run the microbenchmark, execute the script in this repo measure.sh
cd <path-to-this-repo>/compare
./measure.sh
-
Create a free-forever Cassandra Database with DataStax Astra. Use the keyspace name
ks1
and the username/password combodatastax/datastax
when creating the db to make things easy. click here to get started 🚀 -
Download the Secure Connect Bundle from the UI to your machine. link: docs
-
Set the ENV variable
ASTRA_DB_BUNDLE
to the location of the secure connect bundle on your machine.
export ASTRA_DB_BUNDLE=<path-to-your-secure-connect-db.zip>
Install the jmeter tool and make it available via global jmeter
command on your machine.
This repo is using jmeter
for load-testing, i.e: jmeter -n -t loadtest.jmx -j jmeter.out -l jmeter.log
To see more info on how to install JMeter, visit the installation guide.
If you are on Mac OSX you can leverage the brew tool:
brew install jmeter
Install Docker: it is used to run the all microservices in this project:
-
Check the installation guide, and the MacOS installation guide;
-
If you just installed docker, be sure that your current user can run a container (no root required). On Linux, check the post-installation guide.
If you want to run and collect measurements for quarkus-graal project, you need to have GraalVM installed:
-
Install GraalVM;
-
Install platform C developer tools:
-
Linux:
-
Make sure header files are installed on your system.
-
On Fedora
sudo dnf install zlib-devel
; -
Otherwise
sudo apt-get install libz-dev
;
-
-
-
macOS:
-
xcode-select --install
;
-
-
-
Set
GRAALVM_HOME
to your GraalVM Home directory e.g./opt/graalvm
on Linux or/path/to/GraalVM/Contents/Home
on macOS;