Skip to content

Latest commit

 

History

History
131 lines (96 loc) · 8.75 KB

File metadata and controls

131 lines (96 loc) · 8.75 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 4.15.0-210-generic #221-Ubuntu SMP Tue Apr 18 08:32:52 UTC 2023 x86_64 GNU/Linux
CPU: AuthenticAMD AMD Ryzen 7 2700X Eight-Core Processor

Tested Rubies

Ruby JIT Mem start Mem end Runtime Mean Median Std.Dev Slow Errors N GC runs
ruby-2.7.6 36Mb 44Mb 50s 0.97ms 0.92ms 0.29ms 6 0 150000 10
ruby-3.0.4 34Mb 40Mb 50s 0.96ms 0.92ms 0.39ms 170 0 150000 22
ruby-3.0.4 MJIT 34Mb 47Mb 50s 0.94ms 0.89ms 0.4ms 171 0 150000 22
ruby-3.1.3 36Mb 42Mb 49s 0.98ms 0.94ms 0.44ms 242 0 150000 30
ruby-3.1.3 MJIT 36Mb 49Mb 53s 1.03ms 0.97ms 0.45ms 248 0 150000 30
ruby-3.1.3 YJIT 46Mb 56Mb 49s 0.94ms 0.88ms 0.54ms 468 0 150000 52
ruby-3.2.2 35Mb 50Mb 48s 0.93ms 0.87ms 0.31ms 7 0 150000 1
ruby-3.2.2 MJIT 36Mb 74Mb 49s 0.93ms 0.88ms 3.97ms 33 0 150000 3
ruby-3.2.2 YJIT 36Mb 56Mb 43s 0.85ms 0.8ms 0.44ms 11 0 150000 1
ruby-3.3.0-preview1 37Mb 47Mb 47s 0.9ms 0.85ms 0.31ms 12 0 150000 2
ruby-3.3.0-preview1 RJIT 89Mb 253Mb 55s 0.93ms 0.79ms 12.09ms 1547 0 150000 2
ruby-3.3.0-preview1 YJIT 39Mb 54Mb 43s 0.82ms 0.78ms 0.52ms 24 0 150000 2

Winners

  • Ruby with lowest slow response-count (> 5ms): ruby-2.7.6 (6x)
  • Ruby with lowest median* response-time: ruby-3.3.0-preview1 YJIT (0.78ms)
  • Ruby with lowest standard deviation response-time: ruby-2.7.6 (0.29ms)
  • Ruby with lowest mean* response-time: ruby-3.3.0-preview1 YJIT (0.82ms)
  • Ruby with lowest memory use: ruby-3.0.4 (40Mb)

* 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 Histograms of response-times 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).

Response-times for: ruby-2.7.6

Response-times for: ruby-2.7.6

Response-times for: ruby-3.0.4

Response-times for: ruby-3.0.4

Response-times for: ruby-3.0.4 MJIT

Response-times for: ruby-3.0.4 MJIT

Response-times for: ruby-3.1.3

Response-times for: ruby-3.1.3

Response-times for: ruby-3.1.3 MJIT

Response-times for: ruby-3.1.3 MJIT

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 MJIT

Response-times for: ruby-3.2.2 MJIT

Response-times for: ruby-3.2.2 YJIT

Response-times for: ruby-3.2.2 YJIT

Response-times for: ruby-3.3.0-preview1

Response-times for: ruby-3.3.0-preview1

Response-times for: ruby-3.3.0-preview1 RJIT

Response-times for: ruby-3.3.0-preview1 RJIT

Response-times for: ruby-3.3.0-preview1 YJIT

Response-times for: ruby-3.3.0-preview1 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-2.7.6

Detailed response-times for: ruby-2.7.6

Detailed response-times for: ruby-3.0.4

Detailed response-times for: ruby-3.0.4

Detailed response-times for: ruby-3.0.4 MJIT

Detailed response-times for: ruby-3.0.4 MJIT

Detailed response-times for: ruby-3.1.3

Detailed response-times for: ruby-3.1.3

Detailed response-times for: ruby-3.1.3 MJIT

Detailed response-times for: ruby-3.1.3 MJIT

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 MJIT

Detailed response-times for: ruby-3.2.2 MJIT

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.0-preview1

Detailed response-times for: ruby-3.3.0-preview1

Detailed response-times for: ruby-3.3.0-preview1 RJIT

Detailed response-times for: ruby-3.3.0-preview1 RJIT

Detailed response-times for: ruby-3.3.0-preview1 YJIT

Detailed response-times for: ruby-3.3.0-preview1 YJIT