Test for Ruby 4.0 performance regression
1require 'json' 2 3REGEXPS = [ 4 /linux/i, /debian/i, /ubuntu/i, /\bredhat\b/i, /\bRHEL\b/, /\bSUSE\b/, /\bCentOS\b/, /\bopensuse\b/i, 5 /\bslackware\b/i, /\bKDE\b/, /\bGTK\d?\b/, /#GNOME\b/, /\bGNOME\s?\d+/, /\bkde plasma\b/i, 6 /apt\-get/, /\bflatpak\b/i, /\b[Xx]org\b/ 7] 8 9posts = JSON.load(File.read(File.join(__dir__, 'atprotocoldev.json'))) 10loops = ARGV[0].to_i 11 12if loops <= 0 13 puts "Usage: #{$PROGRAM_NAME} <n_loops>" 14 exit 1 15end 16 17time_start = Time.now 18 19loops.times do 20 posts.each do |text| 21 match = REGEXPS.any? { |r| text =~ r } 22 end 23end 24 25time_end = Time.now 26 27total = loops * posts.length 28total_time = time_end - time_start 29 30puts "#{loops} * #{posts.length} = #{total} records in #{total_time} -> #{total / total_time} records/s"