Skip to content

Latest commit

 

History

History
128 lines (94 loc) · 8.08 KB

File metadata and controls

128 lines (94 loc) · 8.08 KB

Analysis app 'rodauth'

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:

  1. index-page without cookie (black)
  2. create-account-page (red)
  3. reset-password-request-page (green)
  4. index-page with good cookie (blue)
  5. index-page with bad cookie (cyan)

System

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

Tested Rubies

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

Winners

  • 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).

Overview of response-times of all tested Rubies

Boxplot showing ~99% of all measurements (sorted by responsetime) Overview of response-times of all tested Rubies

Histograms of response-times of all tested Rubies

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

Memory use of all tested Rubies

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

Scatter-plots

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).

Response-times for: ruby-3.0.4

Response-times for: ruby-3.0.4

Response-times for: ruby-3.1.3

Response-times for: ruby-3.1.3

Response-times for: ruby-3.1.3 YJIT

Response-times for: ruby-3.1.3 YJIT

Response-times for: ruby-3.2.2

Response-times for: ruby-3.2.2

Response-times for: ruby-3.2.2 YJIT

Response-times for: ruby-3.2.2 YJIT

Response-times for: ruby-3.3.1

Response-times for: ruby-3.3.1

Response-times for: ruby-3.3.1 YJIT

Response-times for: ruby-3.3.1 YJIT

Response-times for: ruby-3.4.1

Response-times for: ruby-3.4.1

Response-times for: ruby-3.4.1 YJIT

Response-times for: ruby-3.4.1 YJIT

Response-times for: ruby-4.0.0

Response-times for: ruby-4.0.0

Response-times for: ruby-4.0.0 YJIT

Response-times for: ruby-4.0.0 YJIT

Detailed scatter-plots

Same as above but focussing on the most ocurring response times. GC runs are not shown.

Detailed response-times for: ruby-3.0.4

Detailed response-times for: ruby-3.0.4

Detailed response-times for: ruby-3.1.3

Detailed response-times for: ruby-3.1.3

Detailed response-times for: ruby-3.1.3 YJIT

Detailed response-times for: ruby-3.1.3 YJIT

Detailed response-times for: ruby-3.2.2

Detailed response-times for: ruby-3.2.2

Detailed response-times for: ruby-3.2.2 YJIT

Detailed response-times for: ruby-3.2.2 YJIT

Detailed response-times for: ruby-3.3.1

Detailed response-times for: ruby-3.3.1

Detailed response-times for: ruby-3.3.1 YJIT

Detailed response-times for: ruby-3.3.1 YJIT

Detailed response-times for: ruby-3.4.1

Detailed response-times for: ruby-3.4.1

Detailed response-times for: ruby-3.4.1 YJIT

Detailed response-times for: ruby-3.4.1 YJIT

Detailed response-times for: ruby-4.0.0

Detailed response-times for: ruby-4.0.0

Detailed response-times for: ruby-4.0.0 YJIT

Detailed response-times for: ruby-4.0.0 YJIT