From: "luke-gru (Luke Gruber) via ruby-core" Date: 2025-11-19T22:34:15+00:00 Subject: [ruby-core:123865] [Ruby Bug#21696] Performance degradation for long running processes in Ruby 4.0.0-preview2 Issue #21696 has been updated by luke-gru (Luke Gruber). File rodauth_0_overview.png added File rodauth_0_memory.png added File rodauth_1_ruby-3.4.7.png added File rodauth_1_ruby-3.4.7 YJIT.png added File rodauth_1_ruby-4.0.0.png added File rodauth_1_ruby-4.0.0 YJIT.png added I ran the benchmarks, but unfortunately some of the gems are out of date for anyone looking into this. The Gemfile needs: ```ruby gem "sqlite3" # instead of "1.4.2" gem "nio4r", "2.7.5" # instead of "2.5.8" ``` I also had to create a chruby file in `lib/ruby_measure_responsetime/chruby.rb`: ```ruby # frozen_string_literal: true class Chruby def self.ruby_manager if self.ruby_manager_installed? self end end def self.installed_rubies versions = [["master-release", nil]] versions << ["master-release", "--yjit"] end def self.cmd_initialize_ruby_version_manager; end def self.cmd_switch_to_ruby(version) "chruby #{version} > /dev/null;" end private def self.ruby_manager_installed? true end end ``` The plot images are attached. What I saw was: * There is more memory usage with 4.0.0 compared to 3.4.7, but this is expected. We will mention this in the release notes, and we're working on reducing it. * Running 100k requests doesn't take that long (around 1 min on my machine) so it's hard to say anything about performance degradation or memory growth across the lifetime of the process. You would need more data across a longer timeline for this. * I don't see a reduction in performance according to the images generated from my run. * The memory and histogram graphs are very hard to make out or they didn't work. I attached them anyway. ---------------------------------------- Bug #21696: Performance degradation for long running processes in Ruby 4.0.0-preview2 https://bugs.ruby-lang.org/issues/21696#change-115264 * Author: easydwh (Ivo Herweijer) * Status: Open * ruby -v: ruby 4.0.0preview2 (2025-11-17 master 4fa6e9938c) +PRISM [x86_64-linux] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- When running my RubyMeasureResponsetime tool (https://github.com/easydatawarehousing/ruby_measure_responsetime) on Ruby 4.0.0-preview2, a slow but steady performance degradation is measurable. Both the Rails and the Roda based test applications show this. And both with and without yjit. The Rails application when using yjit also seems to have increasing memory usage over time. Running the same tests on Ruby 3.4.7 shows stable performance and memory usage. I have included some plots showing this behavior. ---Files-------------------------------- rails_devise_2_ruby-4.0.0.jpg (965 KB) rodauth_2_ruby-4.0.0 YJIT.jpg (973 KB) rodauth_2_ruby-4.0.0.jpg (1.02 MB) rails_devise_2_ruby-4.0.0 YJIT.jpg (917 KB) rails_devise_0_memory.png (31.2 KB) rodauth_0_overview.png (43.8 KB) rodauth_0_memory.png (15.6 KB) rodauth_1_ruby-3.4.7.png (152 KB) rodauth_1_ruby-3.4.7 YJIT.png (121 KB) rodauth_1_ruby-4.0.0.png (119 KB) rodauth_1_ruby-4.0.0 YJIT.png (118 KB) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/