This is a test application based on roda-sequel-stack, using Roda as the web framework, Sequel as the database library and Rodauth for authentication.
Performance of this application was tested by continuously sending requests to the server. Five url's were included in the test:
- index-page without cookie (black)
- create-account-page (red)
- reset-password-request-page (green)
- index-page with good cookie (blue)
- index-page with bad cookie (cyan)
OS: Linux 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64 GNU/Linux
CPU: AuthenticAMD AMD Ryzen 7 5800X 8-Core Processor
| Ruby | JIT | Mem start | Mem end | Runtime | Mean | Median | Std.Dev | Slow | Errors | N | GC runs |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ruby-3.0.4 | 34Mb | 45Mb | 141s | 0.56ms | 0.55ms | 0.14ms | 354 | 0 | 750000 | 48 | |
| ruby-3.1.3 | 37Mb | 46Mb | 153s | 0.6ms | 0.56ms | 0.49ms | 5176 | 0 | 750000 | 983 | |
| ruby-3.1.3 | YJIT | 47Mb | 61Mb | 154s | 0.61ms | 0.59ms | 0.18ms | 417 | 0 | 750000 | 49 |
| ruby-3.2.2 | 37Mb | 51Mb | 124s | 0.49ms | 0.47ms | 0.12ms | 99 | 0 | 750000 | 19 | |
| ruby-3.2.2 | YJIT | 38Mb | 57Mb | 113s | 0.45ms | 0.42ms | 0.16ms | 147 | 0 | 750000 | 22 |
| ruby-3.3.1 | 39Mb | 46Mb | 136s | 0.54ms | 0.52ms | 0.12ms | 9 | 0 | 750000 | 4 | |
| ruby-3.3.1 | YJIT | 40Mb | 52Mb | 117s | 0.46ms | 0.44ms | 0.18ms | 25 | 0 | 750000 | 1 |
| ruby-3.4.1 | 33Mb | 43Mb | 144s | 0.57ms | 0.53ms | 0.15ms | 15 | 0 | 750000 | 1 | |
| ruby-3.4.1 | YJIT | 34Mb | 49Mb | 120s | 0.47ms | 0.45ms | 0.22ms | 39 | 0 | 750000 | 1 |
| ruby-4.0.0 | 73Mb | 95Mb | 143s | 0.57ms | 0.53ms | 0.15ms | 44 | 0 | 750000 | 1 | |
| ruby-4.0.0 | YJIT | 76Mb | 109Mb | 120s | 0.48ms | 0.45ms | 0.25ms | 71 | 0 | 750000 | 1 |
- Ruby with lowest slow response-count (> 3ms): ruby-3.3.1 (9x)
- Ruby with lowest median* response-time: ruby-3.2.2 YJIT (0.42ms)
- Ruby with lowest standard deviation response-time: ruby-3.2.2 (0.12ms)
- Ruby with lowest mean* response-time: ruby-3.2.2 YJIT (0.45ms)
- Ruby with lowest memory use: ruby-3.4.1 (43Mb)
* Mean and median are calculated after warmup (x > N/2).
Boxplot showing ~99% of all measurements (sorted by responsetime)

Showing a single tested uri and the most occurring response-times after warmup (x > N/2)

Logged after a fixed interval of measurements (1,000). Each run is shown in a different color

These scatter-plots show the response time of individual calls as dots. Note that many dots may overlap each other.
Vertical blue lines near the X-axis indicate major garbage collection runs (of Run-ID 1, but only when there are less than 100 GC runs).
Same as above but focussing on the most ocurring response times. GC runs are not shown.





















