Skip to content

Latest commit

 

History

History
126 lines (92 loc) · 8.16 KB

File metadata and controls

126 lines (92 loc) · 8.16 KB

Analysis app 'rails_devise'

This is a test application based on Ruby-on-Rails, using Devise 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 67Mb 90Mb 561s 2.23ms 2.28ms 0.6ms 867 0 750000 104
ruby-3.1.3 67Mb 86Mb 535s 2.13ms 2.2ms 0.52ms 524 0 750000 68
ruby-3.1.3 YJIT 79Mb 112Mb 467s 1.85ms 1.89ms 0.55ms 669 0 750000 77
ruby-3.2.2 75Mb 101Mb 524s 2.09ms 2.15ms 0.44ms 204 0 750000 22
ruby-3.2.2 YJIT 83Mb 131Mb 425s 1.69ms 1.7ms 0.47ms 267 0 750000 23
ruby-3.3.1 73Mb 91Mb 520s 2.08ms 2.15ms 0.37ms 82 0 750000 0
ruby-3.3.1 YJIT 78Mb 116Mb 378s 1.5ms 1.51ms 0.36ms 128 0 750000 1
ruby-3.4.1 68Mb 92Mb 544s 2.16ms 2.19ms 0.4ms 111 0 750000 8
ruby-3.4.1 YJIT 75Mb 115Mb 394s 1.57ms 1.53ms 0.44ms 154 0 750000 1
ruby-4.0.0 140Mb 200Mb 542s 2.15ms 2.17ms 0.39ms 304 0 750000 35
ruby-4.0.0 YJIT 160Mb 235Mb 386s 1.54ms 1.53ms 0.46ms 202 0 750000 0

Winners

  • Ruby with lowest slow response-count (> 7ms): ruby-3.3.1 (82x)
  • Ruby with lowest median* response-time: ruby-3.3.1 YJIT (1.51ms)
  • Ruby with lowest standard deviation response-time: ruby-3.3.1 YJIT (0.36ms)
  • Ruby with lowest mean* response-time: ruby-3.3.1 YJIT (1.5ms)
  • Ruby with lowest memory use: ruby-3.1.3 (86Mb)

* 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