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"