Skip to content

Instantly share code, notes, and snippets.

@LePichu
Last active February 7, 2026 22:38
Show Gist options
  • Select an option

  • Save LePichu/960acc759a8a907cafcfc351630f2e6e to your computer and use it in GitHub Desktop.

Select an option

Save LePichu/960acc759a8a907cafcfc351630f2e6e to your computer and use it in GitHub Desktop.
lepichudoesdev@ohiodeck in chai_deps_test via πŸ¦€ on master
$> ./Invoke-Benchmark.ps1; ./Invoke-BenchmarkWarm.ps1
πŸš€ Starting benchmark suite for 32 packages...
============================================

πŸ“¦ Package 1/32


πŸ” Benchmark: com.google.code.gson:gson:2.10.1
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.52s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.89s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.42s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.google.code.gson_gson_2.10.1.json

=====================================

πŸ“¦ Package 2/32


πŸ” Benchmark: org.apache.commons:commons-lang3:3.14.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.43s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.62s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.63s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.commons_commons-lang3_3.14.0.json

=====================================

πŸ“¦ Package 3/32


πŸ” Benchmark: joda-time:joda-time:2.12.5
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.38s (2 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 7.43s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.50s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/joda-time_joda-time_2.12.5.json

=====================================

πŸ“¦ Package 4/32


πŸ” Benchmark: org.slf4j:slf4j-api:2.0.9
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.33s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.05s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.46s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.slf4j_slf4j-api_2.0.9.json

=====================================

πŸ“¦ Package 5/32


πŸ” Benchmark: com.google.code.findbugs:jsr305:3.0.2
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.30s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.87s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.48s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.google.code.findbugs_jsr305_3.0.2.json

=====================================

πŸ“¦ Package 6/32


πŸ” Benchmark: org.projectlombok:lombok:1.18.30
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.40s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.00s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.52s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.projectlombok_lombok_1.18.30.json

=====================================

πŸ“¦ Package 7/32


πŸ” Benchmark: junit:junit:4.13.2
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.43s (2 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 7.88s (2 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.54s (2 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/junit_junit_4.13.2.json

=====================================

πŸ“¦ Package 8/32


πŸ” Benchmark: org.apache.commons:commons-text:1.11.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.71s (2 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 7.95s (2 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.81s (2 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.commons_commons-text_1.11.0.json

=====================================

πŸ“¦ Package 9/32


πŸ” Benchmark: com.squareup.okhttp3:okhttp:4.12.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.56s (8 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.04s (8 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.87s (7 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.squareup.okhttp3_okhttp_4.12.0.json

=====================================

πŸ“¦ Package 10/32


πŸ” Benchmark: com.google.guava:guava:33.0.0-jre
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.61s (7 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.36s (7 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.86s (6 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.google.guava_guava_33.0.0-jre.json

=====================================

πŸ“¦ Package 11/32


πŸ” Benchmark: org.apache.httpcomponents:httpclient:4.5.14
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.61s (4 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.80s (4 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.79s (4 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.httpcomponents_httpclient_4.5.14.json

=====================================

πŸ“¦ Package 12/32


πŸ” Benchmark: com.fasterxml.jackson.core:jackson-databind:2.16.1
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.75s (3 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.78s (3 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.62s (3 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.fasterxml.jackson.core_jackson-databind_2.16.1.json

=====================================

πŸ“¦ Package 13/32


πŸ” Benchmark: io.netty:netty-all:4.1.104.Final
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.84s (31 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 12.38s (35 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.96s (35 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/io.netty_netty-all_4.1.104.Final.json

=====================================

πŸ“¦ Package 14/32


πŸ” Benchmark: org.apache.logging.log4j:log4j-core:2.22.1
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 3.33s (25 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.61s (2 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.38s (2 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.logging.log4j_log4j-core_2.22.1.json

=====================================

πŸ“¦ Package 15/32


πŸ” Benchmark: org.mockito:mockito-core:5.8.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.97s (4 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.61s (4 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.03s (4 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.mockito_mockito-core_5.8.0.json

=====================================

πŸ“¦ Package 16/32


πŸ” Benchmark: com.h2database:h2:2.2.224
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.44s (1 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.18s (1 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.63s (1 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.h2database_h2_2.2.224.json

=====================================

πŸ“¦ Package 17/32


πŸ” Benchmark: org.postgresql:postgresql:42.7.1
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 1.22s (10 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.31s (2 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.75s (2 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.postgresql_postgresql_42.7.1.json

=====================================

πŸ“¦ Package 18/32


πŸ” Benchmark: redis.clients:jedis:5.1.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 1.03s (16 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.67s (5 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.92s (5 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/redis.clients_jedis_5.1.0.json

=====================================

πŸ“¦ Package 19/32


πŸ” Benchmark: io.dropwizard:dropwizard-core:4.0.5
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 4.45s (90 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 13.37s (90 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 9.16s (91 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/io.dropwizard_dropwizard-core_4.0.5.json

=====================================

πŸ“¦ Package 20/32


πŸ” Benchmark: org.hibernate:hibernate-core:6.4.1.Final
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 2.13s (17 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 10.24s (17 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 6.35s (17 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.hibernate_hibernate-core_6.4.1.Final.json

=====================================

πŸ“¦ Package 21/32


πŸ” Benchmark: io.quarkus:quarkus-core:3.6.4
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 2.59s (35 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 12.16s (36 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 7.19s (36 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/io.quarkus_quarkus-core_3.6.4.json

=====================================

πŸ“¦ Package 22/32


πŸ” Benchmark: org.springframework.boot:spring-boot-starter-web:3.2.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 2.75s (34 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 11.95s (34 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 8.41s (34 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.springframework.boot_spring-boot-starter-web_3.2.0.json

=====================================

πŸ“¦ Package 23/32


πŸ” Benchmark: org.springframework.boot:spring-boot-starter-data-jpa:3.2.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 4.68s (48 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 13.84s (48 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 10.48s (48 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.springframework.boot_spring-boot-starter-data-jpa_3.2.0.json

=====================================

πŸ“¦ Package 24/32


πŸ” Benchmark: com.amazonaws:aws-java-sdk-s3:1.12.631
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 1.31s (14 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.35s (14 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.82s (14 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.amazonaws_aws-java-sdk-s3_1.12.631.json

=====================================

πŸ“¦ Package 25/32


πŸ” Benchmark: org.apache.kafka:kafka-clients:3.7.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 1.65s (5 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.87s (5 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.90s (5 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.kafka_kafka-clients_3.7.0.json

=====================================

πŸ“¦ Package 26/32


πŸ” Benchmark: io.micronaut:micronaut-http-server-netty:4.2.3
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 1.26s (26 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 9.11s (26 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 5.63s (26 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/io.micronaut_micronaut-http-server-netty_4.2.3.json

=====================================

πŸ“¦ Package 27/32


πŸ” Benchmark: org.jetbrains.kotlin:kotlin-stdlib:1.9.22
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 0.40s (2 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 8.69s (2 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 4.72s (2 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.jetbrains.kotlin_kotlin-stdlib_1.9.22.json

=====================================

πŸ“¦ Package 28/32


πŸ” Benchmark: org.apache.spark:spark-core_2.13:3.5.3
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 15.96s (113 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 29.57s (117 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 22.09s (118 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.spark_spark-core_2.13_3.5.3.json

=====================================

πŸ“¦ Package 29/32


πŸ” Benchmark: io.grpc:grpc-all:1.60.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 5.19s (66 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 16.15s (66 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 10.02s (66 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/io.grpc_grpc-all_1.60.0.json

=====================================

πŸ“¦ Package 30/32


πŸ” Benchmark: org.apache.flink:flink-streaming-java:1.18.0
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 6.03s (32 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 14.26s (32 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 10.72s (32 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/org.apache.flink_flink-streaming-java_1.18.0.json

=====================================

πŸ“¦ Package 31/32


πŸ” Benchmark: com.google.cloud:google-cloud-storage:2.30.1
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 7.62s (62 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 23.20s (62 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 8.94s (62 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/com.google.cloud_google-cloud-storage_2.30.1.json

=====================================

πŸ“¦ Package 32/32


πŸ” Benchmark: software.amazon.awssdk:s3:2.21.42
=====================================

🧹 Clearing caches for Chai...

1️⃣  Testing Chai...
   βœ“ Chai: 3.26s (44 files)

🧹 Clearing caches for Maven...

2️⃣  Testing Maven...
   βœ“ Maven: 10.97s (43 files)

🧹 Clearing caches for Gradle...

3️⃣  Testing Gradle...
   βœ“ Gradle: 6.70s (43 files)

🧹 Post-test cleanup...

πŸ“Š Results saved: ./bench/software.amazon.awssdk_s3_2.21.42.json

=====================================



βœ… Benchmark suite complete!
πŸ“ Individual results: ./bench/<package>.json
πŸ“Š Summary: ./bench/_summary.json

πŸ† Final Results:
============================================

Tool   Avg    Median Min   Max    Runs
----   ---    ------ ---   ---    ----
Chai   2.29s  1s     0.3s  15.96s   32
Gradle 6.51s  4.99s  4.42s 22.09s   32
Maven  10.97s 9.14s  7.43s 29.57s   32


πŸš€ Performance Analysis:
   Average: Chai is 4.79x faster than Maven (2.29s vs 10.97s)
   Average: Chai is 2.84x faster than Gradle (2.29s vs 6.51s)

   Median: Chai is 9.14x faster than Maven (1s vs 9.14s)
   Median: Chai is 4.99x faster than Gradle (1s vs 4.99s)

πŸ’‘ Per-package speedup:

Package                                                     Chai   Maven  Gradle vs Maven vs Gradle
-------                                                     ----   -----  ------ -------- ---------
com.google.code.findbugs:jsr305:3.0.2                       0.3s   8.87s  4.48s  29.4x    14.9x
org.slf4j:slf4j-api:2.0.9                                   0.33s  8.05s  4.46s  24.4x    13.5x
org.jetbrains.kotlin:kotlin-stdlib:1.9.22                   0.4s   8.69s  4.72s  21.6x    11.7x
com.h2database:h2:2.2.224                                   0.44s  9.18s  4.63s  21x      10.6x
org.apache.commons:commons-lang3:3.14.0                     0.43s  8.62s  4.63s  20.1x    10.8x
org.projectlombok:lombok:1.18.30                            0.4s   8s     4.52s  19.9x    11.3x
joda-time:joda-time:2.12.5                                  0.38s  7.43s  4.5s   19.7x    11.9x
junit:junit:4.13.2                                          0.43s  7.88s  4.54s  18.2x    10.5x
com.google.code.gson:gson:2.10.1                            0.52s  8.89s  4.42s  17.1x    8.5x
com.squareup.okhttp3:okhttp:4.12.0                          0.56s  9.04s  4.87s  16.1x    8.7x
com.google.guava:guava:33.0.0-jre                           0.61s  9.36s  4.86s  15.4x    8x
io.netty:netty-all:4.1.104.Final                            0.84s  12.38s 4.96s  14.7x    5.9x
org.apache.httpcomponents:httpclient:4.5.14                 0.61s  8.8s   4.79s  14.4x    7.8x
com.fasterxml.jackson.core:jackson-databind:2.16.1          0.75s  8.78s  5.62s  11.7x    7.5x
org.apache.commons:commons-text:1.11.0                      0.71s  7.95s  4.81s  11.1x    6.7x
org.mockito:mockito-core:5.8.0                              0.97s  8.61s  5.03s  8.9x     5.2x
redis.clients:jedis:5.1.0                                   1.03s  8.67s  4.92s  8.4x     4.8x
org.postgresql:postgresql:42.7.1                            1.22s  9.31s  4.75s  7.6x     3.9x
io.micronaut:micronaut-http-server-netty:4.2.3              1.26s  9.11s  5.63s  7.2x     4.5x
com.amazonaws:aws-java-sdk-s3:1.12.631                      1.31s  9.35s  5.82s  7.1x     4.4x
org.apache.kafka:kafka-clients:3.7.0                        1.65s  8.87s  5.9s   5.4x     3.6x
org.hibernate:hibernate-core:6.4.1.Final                    2.13s  10.24s 6.35s  4.8x     3x
io.quarkus:quarkus-core:3.6.4                               2.59s  12.16s 7.19s  4.7x     2.8x
org.springframework.boot:spring-boot-starter-web:3.2.0      2.75s  11.95s 8.41s  4.4x     3.1x
software.amazon.awssdk:s3:2.21.42                           3.26s  10.97s 6.7s   3.4x     2.1x
io.grpc:grpc-all:1.60.0                                     5.19s  16.15s 10.02s 3.1x     1.9x
io.dropwizard:dropwizard-core:4.0.5                         4.45s  13.37s 9.16s  3x       2.1x
com.google.cloud:google-cloud-storage:2.30.1                7.62s  23.2s  8.94s  3x       1.2x
org.springframework.boot:spring-boot-starter-data-jpa:3.2.0 4.68s  13.84s 10.48s 3x       2.2x
org.apache.logging.log4j:log4j-core:2.22.1                  3.33s  9.61s  5.38s  2.9x     1.6x
org.apache.flink:flink-streaming-java:1.18.0                6.03s  14.26s 10.72s 2.4x     1.8x
org.apache.spark:spark-core_2.13:3.5.3                      15.96s 29.57s 22.09s 1.9x     1.4x


πŸ“ˆ Distribution by package size:

Category                                    Packages
--------                                    --------
{Small (1-5), Medium (6-20), Large (21-50)}       20
Large (21-50)                                      8
Very Large (50+)                                   4

πŸ”₯ Starting WARM CACHE benchmark suite for 32 packages...
============================================

πŸ“₯ Pre-populating Maven cache with all packages...
   Caching: com.google.code.gson:gson:2.10.1
   Caching: org.apache.commons:commons-lang3:3.14.0
   Caching: joda-time:joda-time:2.12.5
   Caching: org.slf4j:slf4j-api:2.0.9
   Caching: com.google.code.findbugs:jsr305:3.0.2
   Caching: org.projectlombok:lombok:1.18.30
   Caching: junit:junit:4.13.2
   Caching: org.apache.commons:commons-text:1.11.0
   Caching: com.squareup.okhttp3:okhttp:4.12.0
   Caching: com.google.guava:guava:33.0.0-jre
   Caching: org.apache.httpcomponents:httpclient:4.5.14
   Caching: com.fasterxml.jackson.core:jackson-databind:2.16.1
   Caching: io.netty:netty-all:4.1.104.Final
   Caching: org.apache.logging.log4j:log4j-core:2.22.1
   Caching: org.mockito:mockito-core:5.8.0
   Caching: com.h2database:h2:2.2.224
   Caching: org.postgresql:postgresql:42.7.1
   Caching: redis.clients:jedis:5.1.0
   Caching: io.dropwizard:dropwizard-core:4.0.5
   Caching: org.hibernate:hibernate-core:6.4.1.Final
   Caching: io.quarkus:quarkus-core:3.6.4
   Caching: org.springframework.boot:spring-boot-starter-web:3.2.0
   Caching: org.springframework.boot:spring-boot-starter-data-jpa:3.2.0
   Caching: com.amazonaws:aws-java-sdk-s3:1.12.631
   Caching: org.apache.kafka:kafka-clients:3.7.0
   Caching: io.micronaut:micronaut-http-server-netty:4.2.3
   Caching: org.jetbrains.kotlin:kotlin-stdlib:1.9.22
   Caching: org.apache.spark:spark-core_2.13:3.5.3
   Caching: io.grpc:grpc-all:1.60.0
   Caching: org.apache.flink:flink-streaming-java:1.18.0
   Caching: com.google.cloud:google-cloud-storage:2.30.1
   Caching: software.amazon.awssdk:s3:2.21.42
βœ… Cache populated!

🌑️  Running COLD pass to populate dl-test (not benchmarked)...
   [1/32] Cold run: com.google.code.gson:gson:2.10.1
   [2/32] Cold run: org.apache.commons:commons-lang3:3.14.0
   [3/32] Cold run: joda-time:joda-time:2.12.5
   [4/32] Cold run: org.slf4j:slf4j-api:2.0.9
   [5/32] Cold run: com.google.code.findbugs:jsr305:3.0.2
   [6/32] Cold run: org.projectlombok:lombok:1.18.30
   [7/32] Cold run: junit:junit:4.13.2
   [8/32] Cold run: org.apache.commons:commons-text:1.11.0
   [9/32] Cold run: com.squareup.okhttp3:okhttp:4.12.0
   [10/32] Cold run: com.google.guava:guava:33.0.0-jre
   [11/32] Cold run: org.apache.httpcomponents:httpclient:4.5.14
   [12/32] Cold run: com.fasterxml.jackson.core:jackson-databind:2.16.1
   [13/32] Cold run: io.netty:netty-all:4.1.104.Final
   [14/32] Cold run: org.apache.logging.log4j:log4j-core:2.22.1
   [15/32] Cold run: org.mockito:mockito-core:5.8.0
   [16/32] Cold run: com.h2database:h2:2.2.224
   [17/32] Cold run: org.postgresql:postgresql:42.7.1
   [18/32] Cold run: redis.clients:jedis:5.1.0
   [19/32] Cold run: io.dropwizard:dropwizard-core:4.0.5
   [20/32] Cold run: org.hibernate:hibernate-core:6.4.1.Final
   [21/32] Cold run: io.quarkus:quarkus-core:3.6.4
   [22/32] Cold run: org.springframework.boot:spring-boot-starter-web:3.2.0
   [23/32] Cold run: org.springframework.boot:spring-boot-starter-data-jpa:3.2.0
   [24/32] Cold run: com.amazonaws:aws-java-sdk-s3:1.12.631
   [25/32] Cold run: org.apache.kafka:kafka-clients:3.7.0
   [26/32] Cold run: io.micronaut:micronaut-http-server-netty:4.2.3
   [27/32] Cold run: org.jetbrains.kotlin:kotlin-stdlib:1.9.22
   [28/32] Cold run: org.apache.spark:spark-core_2.13:3.5.3
   [29/32] Cold run: io.grpc:grpc-all:1.60.0
   [30/32] Cold run: org.apache.flink:flink-streaming-java:1.18.0
   [31/32] Cold run: com.google.cloud:google-cloud-storage:2.30.1
   [32/32] Cold run: software.amazon.awssdk:s3:2.21.42
βœ… Cold pass complete! dl-test/ now fully populated.

πŸ”₯ Running WARM benchmark pass (this counts!)...

πŸ“¦ Package 1/32


πŸ” Benchmark (WARM): com.google.code.gson:gson:2.10.1
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.12s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.29s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.91s (1 files)

πŸ“Š Results saved: ./bench-warm/com.google.code.gson_gson_2.10.1.json

=====================================

πŸ“¦ Package 2/32


πŸ” Benchmark (WARM): org.apache.commons:commons-lang3:3.14.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.44s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.73s (1 files)

πŸ“Š Results saved: ./bench-warm/org.apache.commons_commons-lang3_3.14.0.json

=====================================

πŸ“¦ Package 3/32


πŸ” Benchmark (WARM): joda-time:joda-time:2.12.5
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (2 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.40s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.74s (1 files)

πŸ“Š Results saved: ./bench-warm/joda-time_joda-time_2.12.5.json

=====================================

πŸ“¦ Package 4/32


πŸ” Benchmark (WARM): org.slf4j:slf4j-api:2.0.9
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.12s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.38s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.74s (1 files)

πŸ“Š Results saved: ./bench-warm/org.slf4j_slf4j-api_2.0.9.json

=====================================

πŸ“¦ Package 5/32


πŸ” Benchmark (WARM): com.google.code.findbugs:jsr305:3.0.2
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.41s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.83s (1 files)

πŸ“Š Results saved: ./bench-warm/com.google.code.findbugs_jsr305_3.0.2.json

=====================================

πŸ“¦ Package 6/32


πŸ” Benchmark (WARM): org.projectlombok:lombok:1.18.30
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.40s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.73s (1 files)

πŸ“Š Results saved: ./bench-warm/org.projectlombok_lombok_1.18.30.json

=====================================

πŸ“¦ Package 7/32


πŸ” Benchmark (WARM): junit:junit:4.13.2
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (2 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.43s (2 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.78s (2 files)

πŸ“Š Results saved: ./bench-warm/junit_junit_4.13.2.json

=====================================

πŸ“¦ Package 8/32


πŸ” Benchmark (WARM): org.apache.commons:commons-text:1.11.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (2 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.34s (2 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.78s (2 files)

πŸ“Š Results saved: ./bench-warm/org.apache.commons_commons-text_1.11.0.json

=====================================

πŸ“¦ Package 9/32


πŸ” Benchmark (WARM): com.squareup.okhttp3:okhttp:4.12.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (8 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.38s (8 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.77s (7 files)

πŸ“Š Results saved: ./bench-warm/com.squareup.okhttp3_okhttp_4.12.0.json

=====================================

πŸ“¦ Package 10/32


πŸ” Benchmark (WARM): com.google.guava:guava:33.0.0-jre
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (7 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.39s (7 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.80s (6 files)

πŸ“Š Results saved: ./bench-warm/com.google.guava_guava_33.0.0-jre.json

=====================================

πŸ“¦ Package 11/32


πŸ” Benchmark (WARM): org.apache.httpcomponents:httpclient:4.5.14
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (4 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.39s (4 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.79s (4 files)

πŸ“Š Results saved: ./bench-warm/org.apache.httpcomponents_httpclient_4.5.14.json

=====================================

πŸ“¦ Package 12/32


πŸ” Benchmark (WARM): com.fasterxml.jackson.core:jackson-databind:2.16.1
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (3 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.42s (3 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.79s (3 files)

πŸ“Š Results saved: ./bench-warm/com.fasterxml.jackson.core_jackson-databind_2.16.1.json

=====================================

πŸ“¦ Package 13/32


πŸ” Benchmark (WARM): io.netty:netty-all:4.1.104.Final
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (31 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.61s (35 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.84s (35 files)

πŸ“Š Results saved: ./bench-warm/io.netty_netty-all_4.1.104.Final.json

=====================================

πŸ“¦ Package 14/32


πŸ” Benchmark (WARM): org.apache.logging.log4j:log4j-core:2.22.1
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (25 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.40s (2 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.79s (2 files)

πŸ“Š Results saved: ./bench-warm/org.apache.logging.log4j_log4j-core_2.22.1.json

=====================================

πŸ“¦ Package 15/32


πŸ” Benchmark (WARM): org.mockito:mockito-core:5.8.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (4 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.41s (4 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.82s (4 files)

πŸ“Š Results saved: ./bench-warm/org.mockito_mockito-core_5.8.0.json

=====================================

πŸ“¦ Package 16/32


πŸ” Benchmark (WARM): com.h2database:h2:2.2.224
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (1 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.39s (1 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.78s (1 files)

πŸ“Š Results saved: ./bench-warm/com.h2database_h2_2.2.224.json

=====================================

πŸ“¦ Package 17/32


πŸ” Benchmark (WARM): org.postgresql:postgresql:42.7.1
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (10 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.39s (2 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.68s (2 files)

πŸ“Š Results saved: ./bench-warm/org.postgresql_postgresql_42.7.1.json

=====================================

πŸ“¦ Package 18/32


πŸ” Benchmark (WARM): redis.clients:jedis:5.1.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.17s (16 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.38s (5 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.73s (5 files)

πŸ“Š Results saved: ./bench-warm/redis.clients_jedis_5.1.0.json

=====================================

πŸ“¦ Package 19/32


πŸ” Benchmark (WARM): io.dropwizard:dropwizard-core:4.0.5
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.19s (90 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.71s (90 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 4.04s (91 files)

πŸ“Š Results saved: ./bench-warm/io.dropwizard_dropwizard-core_4.0.5.json

=====================================

πŸ“¦ Package 20/32


πŸ” Benchmark (WARM): org.hibernate:hibernate-core:6.4.1.Final
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (17 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.46s (17 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.89s (17 files)

πŸ“Š Results saved: ./bench-warm/org.hibernate_hibernate-core_6.4.1.Final.json

=====================================

πŸ“¦ Package 21/32


πŸ” Benchmark (WARM): io.quarkus:quarkus-core:3.6.4
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.16s (35 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.59s (36 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.88s (36 files)

πŸ“Š Results saved: ./bench-warm/io.quarkus_quarkus-core_3.6.4.json

=====================================

πŸ“¦ Package 22/32


πŸ” Benchmark (WARM): org.springframework.boot:spring-boot-starter-web:3.2.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (34 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.48s (34 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.87s (34 files)

πŸ“Š Results saved: ./bench-warm/org.springframework.boot_spring-boot-starter-web_3.2.0.json

=====================================

πŸ“¦ Package 23/32


πŸ” Benchmark (WARM): org.springframework.boot:spring-boot-starter-data-jpa:3.2.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.18s (48 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.52s (48 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.97s (48 files)

πŸ“Š Results saved: ./bench-warm/org.springframework.boot_spring-boot-starter-data-jpa_3.2.0.json

=====================================

πŸ“¦ Package 24/32


πŸ” Benchmark (WARM): com.amazonaws:aws-java-sdk-s3:1.12.631
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (14 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.46s (14 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.87s (14 files)

πŸ“Š Results saved: ./bench-warm/com.amazonaws_aws-java-sdk-s3_1.12.631.json

=====================================

πŸ“¦ Package 25/32


πŸ” Benchmark (WARM): org.apache.kafka:kafka-clients:3.7.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.13s (5 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.39s (5 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.90s (5 files)

πŸ“Š Results saved: ./bench-warm/org.apache.kafka_kafka-clients_3.7.0.json

=====================================

πŸ“¦ Package 26/32


πŸ” Benchmark (WARM): io.micronaut:micronaut-http-server-netty:4.2.3
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (26 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.43s (26 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.79s (26 files)

πŸ“Š Results saved: ./bench-warm/io.micronaut_micronaut-http-server-netty_4.2.3.json

=====================================

πŸ“¦ Package 27/32


πŸ” Benchmark (WARM): org.jetbrains.kotlin:kotlin-stdlib:1.9.22
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.14s (2 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.38s (2 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.82s (2 files)

πŸ“Š Results saved: ./bench-warm/org.jetbrains.kotlin_kotlin-stdlib_1.9.22.json

=====================================

πŸ“¦ Package 28/32


πŸ” Benchmark (WARM): org.apache.spark:spark-core_2.13:3.5.3
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.16s (113 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.69s (117 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 4.88s (118 files)

πŸ“Š Results saved: ./bench-warm/org.apache.spark_spark-core_2.13_3.5.3.json

=====================================

πŸ“¦ Package 29/32


πŸ” Benchmark (WARM): io.grpc:grpc-all:1.60.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.16s (66 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.57s (66 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 4.10s (66 files)

πŸ“Š Results saved: ./bench-warm/io.grpc_grpc-all_1.60.0.json

=====================================

πŸ“¦ Package 30/32


πŸ” Benchmark (WARM): org.apache.flink:flink-streaming-java:1.18.0
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (32 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.64s (32 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 4.17s (32 files)

πŸ“Š Results saved: ./bench-warm/org.apache.flink_flink-streaming-java_1.18.0.json

=====================================

πŸ“¦ Package 31/32


πŸ” Benchmark (WARM): com.google.cloud:google-cloud-storage:2.30.1
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (62 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.67s (62 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 4.09s (62 files)

πŸ“Š Results saved: ./bench-warm/com.google.cloud_google-cloud-storage_2.30.1.json

=====================================

πŸ“¦ Package 32/32


πŸ” Benchmark (WARM): software.amazon.awssdk:s3:2.21.42
=====================================

πŸ”₯ Using warm Maven cache and warm JAR cache...

1️⃣  Testing Chai (warm)...
   βœ“ Chai: 0.15s (44 files)

2️⃣  Testing Maven (warm)...
   βœ“ Maven: 1.65s (43 files)

3️⃣  Testing Gradle (warm)...
   βœ“ Gradle: 3.96s (43 files)

πŸ“Š Results saved: ./bench-warm/software.amazon.awssdk_s3_2.21.42.json

=====================================



βœ… Warm cache benchmark suite complete!
πŸ“ Individual results: ./bench-warm/<package>.json
πŸ“Š Summary: ./bench-warm/_summary.json

πŸ† Final Results (WARM CACHE):
============================================

Tool   Avg   Median Min   Max   Runs
----   ---   ------ ---   ---   ----
Chai   0.14s 0.14s  0.12s 0.19s   32
Maven  1.47s 1.42s  1.29s 1.71s   32
Gradle 3.88s 3.82s  3.68s 4.88s   32


πŸš€ Performance Analysis (WARM):
   Average: Chai is 10.5x faster than Maven (0.14s vs 1.47s)
   Average: Chai is 27.71x faster than Gradle (0.14s vs 3.88s)

   Median: Chai is 10.14x faster than Maven (0.14s vs 1.42s)
   Median: Chai is 27.29x faster than Gradle (0.14s vs 3.82s)

πŸ’‘ Per-package speedup (WARM):

Package                                                     Chai  Maven Gradle vs Maven vs Gradle
-------                                                     ----  ----- ------ -------- ---------
io.netty:netty-all:4.1.104.Final                            0.14s 1.61s 3.84s  11.4x    27.1x
com.google.cloud:google-cloud-storage:2.30.1                0.15s 1.67s 4.09s  11.2x    27.4x
org.slf4j:slf4j-api:2.0.9                                   0.12s 1.38s 3.74s  11.1x    30x
junit:junit:4.13.2                                          0.13s 1.43s 3.78s  11.1x    29.4x
org.apache.flink:flink-streaming-java:1.18.0                0.15s 1.64s 4.17s  10.9x    27.5x
software.amazon.awssdk:s3:2.21.42                           0.15s 1.65s 3.96s  10.8x    25.8x
com.google.code.findbugs:jsr305:3.0.2                       0.13s 1.41s 3.83s  10.8x    29.3x
org.projectlombok:lombok:1.18.30                            0.13s 1.4s  3.73s  10.7x    28.7x
com.h2database:h2:2.2.224                                   0.13s 1.39s 3.78s  10.7x    29x
org.apache.commons:commons-lang3:3.14.0                     0.14s 1.44s 3.73s  10.6x    27.4x
com.amazonaws:aws-java-sdk-s3:1.12.631                      0.14s 1.46s 3.87s  10.6x    28.2x
com.squareup.okhttp3:okhttp:4.12.0                          0.13s 1.38s 3.77s  10.6x    28.9x
org.apache.httpcomponents:httpclient:4.5.14                 0.13s 1.39s 3.79s  10.5x    28.7x
com.google.code.gson:gson:2.10.1                            0.12s 1.29s 3.91s  10.4x    31.8x
org.hibernate:hibernate-core:6.4.1.Final                    0.14s 1.46s 3.89s  10.4x    27.9x
org.apache.spark:spark-core_2.13:3.5.3                      0.16s 1.69s 4.88s  10.4x    30x
org.apache.kafka:kafka-clients:3.7.0                        0.13s 1.39s 3.9s   10.4x    29.2x
com.fasterxml.jackson.core:jackson-databind:2.16.1          0.14s 1.42s 3.79s  10.3x    27.4x
io.micronaut:micronaut-http-server-netty:4.2.3              0.14s 1.43s 3.79s  10.3x    27.4x
org.jetbrains.kotlin:kotlin-stdlib:1.9.22                   0.14s 1.38s 3.82s  10.2x    28.2x
org.mockito:mockito-core:5.8.0                              0.14s 1.41s 3.82s  10.2x    27.7x
io.quarkus:quarkus-core:3.6.4                               0.16s 1.59s 3.88s  10.2x    24.7x
com.google.guava:guava:33.0.0-jre                           0.14s 1.39s 3.8s   10x      27.2x
org.apache.commons:commons-text:1.11.0                      0.14s 1.34s 3.78s  9.9x     27.8x
org.springframework.boot:spring-boot-starter-web:3.2.0      0.15s 1.48s 3.87s  9.9x     26x
org.postgresql:postgresql:42.7.1                            0.14s 1.39s 3.68s  9.8x     26x
io.grpc:grpc-all:1.60.0                                     0.16s 1.57s 4.1s   9.7x     25.5x
joda-time:joda-time:2.12.5                                  0.15s 1.4s  3.74s  9.6x     25.6x
org.apache.logging.log4j:log4j-core:2.22.1                  0.15s 1.4s  3.79s  9.2x     24.8x
io.dropwizard:dropwizard-core:4.0.5                         0.19s 1.71s 4.04s  8.8x     20.9x
org.springframework.boot:spring-boot-starter-data-jpa:3.2.0 0.18s 1.52s 3.97s  8.5x     22.3x
redis.clients:jedis:5.1.0                                   0.17s 1.38s 3.73s  8x       21.5x


πŸ“ˆ Distribution by package size:

Category                                    Packages
--------                                    --------
{Small (1-5), Medium (6-20), Large (21-50)}       20
Large (21-50)                                      8
Very Large (50+)                                   4

lepichudoesdev@ohiodeck in chai_deps_test via πŸ¦€ on master in 1029.7s !!!
$> 
@LePichu
Copy link
Author

LePichu commented Feb 5, 2026

Summary

I just spent the last 3 days working on this, trying to figure out where I was going wrong, I am giving up, everything works for now, but it cost my sanity and 20+ hours of debugging, even with LLM help it was looking pretty bleak. I am attaching the benchmark table below, I am NOT touching this for the foreseeable future. I spent too much time with Maven's resolution, then compiling it to native code via Graal, and then trying to figure things out with PGO and other performance shenanigans AND then needing to debug Uber JAR shenanigans and crashes caused by reflection. It is VERY OVER for me.

image

Bench

Tool Median Average Min Max
Chai (cold) 1.91s 5.27s 0.44s 28.57s
Chai (warm) 0.15s 0.18s 0.13s 0.41s
Maven (cold) 11.33s 12.60s 8.80s 26.67s
Maven (warm) 1.50s 1.54s 1.34s 1.84s
Gradle (cold) 5.48s 6.27s 4.66s 11.12s
Gradle (warm) 3.95s 4.02s 3.84s 5.00s
πŸš€ Performance Analysis:
   Average: Chai is 2.39x faster than Maven (5.27s vs 12.6s)
   Average: Chai is 1.19x faster than Gradle (5.27s vs 6.27s)

   Median: Chai is 5.93x faster than Maven (1.91s vs 11.33s)
   Median: Chai is 2.87x faster than Gradle (1.91s vs 5.48s)
   
---

πŸš€ Performance Analysis (WARM):
   Average: Chai is 8.56x faster than Maven (0.18s vs 1.54s)
   Average: Chai is 22.33x faster than Gradle (0.18s vs 4.02s)

   Median: Chai is 10x faster than Maven (0.15s vs 1.5s)
   Median: Chai is 26.33x faster than Gradle (0.15s vs 3.95s)

I will take being only slightly faster than Gr*dle or Maven in cold runs, I have hit a wall, I don't think the resolution is the problem at this point, but it might be; I experimented with coursier and that came out slower, I am using Maven's own resolver for now (again), it will be staying that way too; unless I feel like maybe using Gradle's resolver and compiling that down to native.

ALSO MAJOR NOTE:

Benchmark Configuration: All tools tested with cold start for fairness (--no-daemon for Gradle). In development scenarios with persistent Gradle daemon, Chai should remain 3-4x faster than hot daemon (0.15s vs 0.5s).

UPDATE:
Ran the bench with Gradle Daemon being shared across urns, it still did NOT speed it up at ALL.

Notes

The following is a LLM summary because I am way too tired for this now.

Chai's performance comes from GraalVM Native Image compilation, which eliminates JVM startup overhead (saving ~1.2s per invocation) and enables ahead-of-time optimized code with aggressive inlining. In warm scenarios, Chai uses in-memory HashSet lookups for O(1) dependency checks, while Maven/Gradle pay the JVM startup tax plus XML parsing on every run. For cold downloads, Chai's 128 concurrent HTTP connections parallelize fetching versus Maven's default sequential downloads. The benchmark is fair because both tools resolve the same Maven coordinates from Maven Central, and the two-pass warm design pre-caches POMs and JARs for all tools before measurement. Chai excludes test and provided scope dependencies (not needed at runtime) but aggressively resolves all compile/runtime transitives, explaining why Chai sometimes reports more files than Maven (e.g., log4j-core: 25 vs 2 files). The 10x median speedup in warm scenarios represents the daily developer experience when re-checking dependencies that are already downloaded.

@LePichu
Copy link
Author

LePichu commented Feb 7, 2026

UPDATE (08/02/2025 - 4:01AM)

I did some more optimization, it's even faster now and does proper Parallelism baked into Maven itself, at least I think it is finally; can definitely tinker here and there, but I think it is at the limit, besides that, here are the new tables:

Cold Cache Performance

Tool Avg Median Min Max
Chai 2.29s 1s 0.3s 15.96s
Gradle 6.51s 4.99s 4.42s 22.09s
Maven 10.97s 9.14s 7.43s 29.57s

Warm Cache Performance

Tool Avg Median Min Max
Chai 0.14s 0.14s 0.12s 0.19s
Gradle 3.88s 3.82s 3.68s 4.88s
Maven 1.47s 1.42s 1.29s 1.71s

I am really happy with the new benches, at least it is no longer slower than Gradle on bigger packages; finally maintaining a lead of at least 1.4x, that's fine with me.

βœ… Benchmark suite complete!
πŸ“ Individual results: ./bench/<package>.json
πŸ“Š Summary: ./bench/_summary.json

πŸ† Final Results:
============================================

Tool   Avg    Median Min   Max    Runs
----   ---    ------ ---   ---    ----
Chai   2.29s  1s     0.3s  15.96s   32
Gradle 6.51s  4.99s  4.42s 22.09s   32
Maven  10.97s 9.14s  7.43s 29.57s   32


πŸš€ Performance Analysis:
   Average: Chai is 4.79x faster than Maven (2.29s vs 10.97s)
   Average: Chai is 2.84x faster than Gradle (2.29s vs 6.51s)

   Median: Chai is 9.14x faster than Maven (1s vs 9.14s)
   Median: Chai is 4.99x faster than Gradle (1s vs 4.99s)

πŸ’‘ Per-package speedup:

Package                                                     Chai   Maven  Gradle vs Maven vs Gradle
-------                                                     ----   -----  ------ -------- ---------
com.google.code.findbugs:jsr305:3.0.2                       0.3s   8.87s  4.48s  29.4x    14.9x
org.slf4j:slf4j-api:2.0.9                                   0.33s  8.05s  4.46s  24.4x    13.5x
org.jetbrains.kotlin:kotlin-stdlib:1.9.22                   0.4s   8.69s  4.72s  21.6x    11.7x
com.h2database:h2:2.2.224                                   0.44s  9.18s  4.63s  21x      10.6x
org.apache.commons:commons-lang3:3.14.0                     0.43s  8.62s  4.63s  20.1x    10.8x
org.projectlombok:lombok:1.18.30                            0.4s   8s     4.52s  19.9x    11.3x
joda-time:joda-time:2.12.5                                  0.38s  7.43s  4.5s   19.7x    11.9x
junit:junit:4.13.2                                          0.43s  7.88s  4.54s  18.2x    10.5x
com.google.code.gson:gson:2.10.1                            0.52s  8.89s  4.42s  17.1x    8.5x
com.squareup.okhttp3:okhttp:4.12.0                          0.56s  9.04s  4.87s  16.1x    8.7x
com.google.guava:guava:33.0.0-jre                           0.61s  9.36s  4.86s  15.4x    8x
io.netty:netty-all:4.1.104.Final                            0.84s  12.38s 4.96s  14.7x    5.9x
org.apache.httpcomponents:httpclient:4.5.14                 0.61s  8.8s   4.79s  14.4x    7.8x
com.fasterxml.jackson.core:jackson-databind:2.16.1          0.75s  8.78s  5.62s  11.7x    7.5x
org.apache.commons:commons-text:1.11.0                      0.71s  7.95s  4.81s  11.1x    6.7x
org.mockito:mockito-core:5.8.0                              0.97s  8.61s  5.03s  8.9x     5.2x
redis.clients:jedis:5.1.0                                   1.03s  8.67s  4.92s  8.4x     4.8x
org.postgresql:postgresql:42.7.1                            1.22s  9.31s  4.75s  7.6x     3.9x
io.micronaut:micronaut-http-server-netty:4.2.3              1.26s  9.11s  5.63s  7.2x     4.5x
com.amazonaws:aws-java-sdk-s3:1.12.631                      1.31s  9.35s  5.82s  7.1x     4.4x
org.apache.kafka:kafka-clients:3.7.0                        1.65s  8.87s  5.9s   5.4x     3.6x
org.hibernate:hibernate-core:6.4.1.Final                    2.13s  10.24s 6.35s  4.8x     3x
io.quarkus:quarkus-core:3.6.4                               2.59s  12.16s 7.19s  4.7x     2.8x
org.springframework.boot:spring-boot-starter-web:3.2.0      2.75s  11.95s 8.41s  4.4x     3.1x
software.amazon.awssdk:s3:2.21.42                           3.26s  10.97s 6.7s   3.4x     2.1x
io.grpc:grpc-all:1.60.0                                     5.19s  16.15s 10.02s 3.1x     1.9x
io.dropwizard:dropwizard-core:4.0.5                         4.45s  13.37s 9.16s  3x       2.1x
com.google.cloud:google-cloud-storage:2.30.1                7.62s  23.2s  8.94s  3x       1.2x
org.springframework.boot:spring-boot-starter-data-jpa:3.2.0 4.68s  13.84s 10.48s 3x       2.2x
org.apache.logging.log4j:log4j-core:2.22.1                  3.33s  9.61s  5.38s  2.9x     1.6x
org.apache.flink:flink-streaming-java:1.18.0                6.03s  14.26s 10.72s 2.4x     1.8x
org.apache.spark:spark-core_2.13:3.5.3                      15.96s 29.57s 22.09s 1.9x     1.4x


πŸ“ˆ Distribution by package size:

Category                                    Packages
--------                                    --------
{Small (1-5), Medium (6-20), Large (21-50)}       20
Large (21-50)                                      8
Very Large (50+)                                   4


-------------------------------------------------------------------------------------


βœ… Warm cache benchmark suite complete!
πŸ“ Individual results: ./bench-warm/<package>.json
πŸ“Š Summary: ./bench-warm/_summary.json

πŸ† Final Results (WARM CACHE):
============================================

Tool   Avg   Median Min   Max   Runs
----   ---   ------ ---   ---   ----
Chai   0.14s 0.14s  0.12s 0.19s   32
Maven  1.47s 1.42s  1.29s 1.71s   32
Gradle 3.88s 3.82s  3.68s 4.88s   32


πŸš€ Performance Analysis (WARM):
   Average: Chai is 10.5x faster than Maven (0.14s vs 1.47s)
   Average: Chai is 27.71x faster than Gradle (0.14s vs 3.88s)

   Median: Chai is 10.14x faster than Maven (0.14s vs 1.42s)
   Median: Chai is 27.29x faster than Gradle (0.14s vs 3.82s)

πŸ’‘ Per-package speedup (WARM):

Package                                                     Chai  Maven Gradle vs Maven vs Gradle
-------                                                     ----  ----- ------ -------- ---------
io.netty:netty-all:4.1.104.Final                            0.14s 1.61s 3.84s  11.4x    27.1x
com.google.cloud:google-cloud-storage:2.30.1                0.15s 1.67s 4.09s  11.2x    27.4x
org.slf4j:slf4j-api:2.0.9                                   0.12s 1.38s 3.74s  11.1x    30x
junit:junit:4.13.2                                          0.13s 1.43s 3.78s  11.1x    29.4x
org.apache.flink:flink-streaming-java:1.18.0                0.15s 1.64s 4.17s  10.9x    27.5x
software.amazon.awssdk:s3:2.21.42                           0.15s 1.65s 3.96s  10.8x    25.8x
com.google.code.findbugs:jsr305:3.0.2                       0.13s 1.41s 3.83s  10.8x    29.3x
org.projectlombok:lombok:1.18.30                            0.13s 1.4s  3.73s  10.7x    28.7x
com.h2database:h2:2.2.224                                   0.13s 1.39s 3.78s  10.7x    29x
org.apache.commons:commons-lang3:3.14.0                     0.14s 1.44s 3.73s  10.6x    27.4x
com.amazonaws:aws-java-sdk-s3:1.12.631                      0.14s 1.46s 3.87s  10.6x    28.2x
com.squareup.okhttp3:okhttp:4.12.0                          0.13s 1.38s 3.77s  10.6x    28.9x
org.apache.httpcomponents:httpclient:4.5.14                 0.13s 1.39s 3.79s  10.5x    28.7x
com.google.code.gson:gson:2.10.1                            0.12s 1.29s 3.91s  10.4x    31.8x
org.hibernate:hibernate-core:6.4.1.Final                    0.14s 1.46s 3.89s  10.4x    27.9x
org.apache.spark:spark-core_2.13:3.5.3                      0.16s 1.69s 4.88s  10.4x    30x
org.apache.kafka:kafka-clients:3.7.0                        0.13s 1.39s 3.9s   10.4x    29.2x
com.fasterxml.jackson.core:jackson-databind:2.16.1          0.14s 1.42s 3.79s  10.3x    27.4x
io.micronaut:micronaut-http-server-netty:4.2.3              0.14s 1.43s 3.79s  10.3x    27.4x
org.jetbrains.kotlin:kotlin-stdlib:1.9.22                   0.14s 1.38s 3.82s  10.2x    28.2x
org.mockito:mockito-core:5.8.0                              0.14s 1.41s 3.82s  10.2x    27.7x
io.quarkus:quarkus-core:3.6.4                               0.16s 1.59s 3.88s  10.2x    24.7x
com.google.guava:guava:33.0.0-jre                           0.14s 1.39s 3.8s   10x      27.2x
org.apache.commons:commons-text:1.11.0                      0.14s 1.34s 3.78s  9.9x     27.8x
org.springframework.boot:spring-boot-starter-web:3.2.0      0.15s 1.48s 3.87s  9.9x     26x
org.postgresql:postgresql:42.7.1                            0.14s 1.39s 3.68s  9.8x     26x
io.grpc:grpc-all:1.60.0                                     0.16s 1.57s 4.1s   9.7x     25.5x
joda-time:joda-time:2.12.5                                  0.15s 1.4s  3.74s  9.6x     25.6x
org.apache.logging.log4j:log4j-core:2.22.1                  0.15s 1.4s  3.79s  9.2x     24.8x
io.dropwizard:dropwizard-core:4.0.5                         0.19s 1.71s 4.04s  8.8x     20.9x
org.springframework.boot:spring-boot-starter-data-jpa:3.2.0 0.18s 1.52s 3.97s  8.5x     22.3x
redis.clients:jedis:5.1.0                                   0.17s 1.38s 3.73s  8x       21.5x


πŸ“ˆ Distribution by package size:

Category                                    Packages
--------                                    --------
{Small (1-5), Medium (6-20), Large (21-50)}       20
Large (21-50)                                      8
Very Large (50+)                                   4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment