diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b9690227 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +data_large.txt +.idea +result.json* +.result.tmp +benchmarks/**/result* +result_large.json \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..a881f5cd --- /dev/null +++ b/Gemfile @@ -0,0 +1,13 @@ +source 'https://rubygems.org' +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby '2.6.3' + +gem 'memory_profiler' +gem 'rspec' +gem 'multi_json' +gem 'benchmark-ips' +gem 'ruby-prof' +gem 'rspec-benchmark' +gem 'stackprof' +gem 'oj' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..35d92813 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,50 @@ +GEM + remote: https://rubygems.org/ + specs: + benchmark-ips (2.7.2) + benchmark-malloc (0.1.0) + benchmark-perf (0.5.0) + benchmark-trend (0.3.0) + diff-lcs (1.3) + memory_profiler (0.9.14) + multi_json (1.13.1) + oj (3.8.1) + rspec (3.8.0) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-benchmark (0.5.0) + benchmark-malloc (~> 0.1.0) + benchmark-perf (~> 0.5.0) + benchmark-trend (~> 0.3.0) + rspec (>= 3.0.0, < 4.0.0) + rspec-core (3.8.2) + rspec-support (~> 3.8.0) + rspec-expectations (3.8.4) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-mocks (3.8.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-support (3.8.2) + ruby-prof (1.0.0) + stackprof (0.2.12) + +PLATFORMS + ruby + +DEPENDENCIES + benchmark-ips + memory_profiler + multi_json + oj + rspec + rspec-benchmark + ruby-prof + stackprof + +RUBY VERSION + ruby 2.6.3p62 + +BUNDLED WITH + 1.17.3 diff --git a/benchmarks/CPU/benchmark-ips.rb b/benchmarks/CPU/benchmark-ips.rb new file mode 100644 index 00000000..a7055ca0 --- /dev/null +++ b/benchmarks/CPU/benchmark-ips.rb @@ -0,0 +1,15 @@ +require 'benchmark/ips' +require_relative '../../task-2' + +Benchmark.ips do |x| + # The default is :stats => :sd, which doesn't have a configurable confidence + # confidence is 95% by default, so it can be omitted + x.config( + stats: :bootstrap, + confidence: 95, + ) + + x.report("work") do + work('../data.txt') + end +end diff --git a/benchmarks/CPU/benchmark.rb b/benchmarks/CPU/benchmark.rb new file mode 100644 index 00000000..de6251c1 --- /dev/null +++ b/benchmarks/CPU/benchmark.rb @@ -0,0 +1,9 @@ +require 'benchmark' + +require_relative '../../task-2' + +time = Benchmark.realtime do |x| + work('data_large.txt') +end + +puts "Finish in #{time}" \ No newline at end of file diff --git a/benchmarks/CPU/flat.txt b/benchmarks/CPU/flat.txt new file mode 100644 index 00000000..0af33961 --- /dev/null +++ b/benchmarks/CPU/flat.txt @@ -0,0 +1,330 @@ +Measure Mode: wall_time +Thread ID: 47255732992360 +Fiber ID: 47255735109660 +Total: 0.023066 +Sort by: self_time + + %self total self wait child calls name location + 55.75 0.013 0.013 0.000 0.000 1 File#initialize + 26.44 0.008 0.006 0.000 0.002 22 *Kernel#gem_original_require + 2.37 0.010 0.001 0.000 0.009 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 1.33 0.000 0.000 0.000 0.000 221 #file? + 1.06 0.001 0.000 0.000 0.000 1 Kernel#eval + 0.75 0.001 0.000 0.000 0.000 112 *Array#any? + 0.54 0.000 0.000 0.000 0.000 71 #join + 0.45 0.010 0.000 0.000 0.010 42 *Array#each + 0.34 0.000 0.000 0.000 0.000 1 #foreach + 0.33 0.000 0.000 0.000 0.000 18 Object#make_report /home/pavel/Документы/rails-optimization-2-task1/task-2.rb:32 + 0.32 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.29 0.000 0.000 0.000 0.000 1 IO#close + 0.26 0.000 0.000 0.000 0.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.21 0.001 0.000 0.000 0.001 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.19 0.001 0.000 0.000 0.001 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.19 0.001 0.000 0.000 0.000 40 *Class#new + 0.19 0.000 0.000 0.000 0.000 19 #expand_path + 0.19 0.000 0.000 0.000 0.000 14 #chdir + 0.18 0.000 0.000 0.000 0.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.17 0.000 0.000 0.000 0.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.17 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.15 0.000 0.000 0.000 0.000 1 #dump + 0.13 0.000 0.000 0.000 0.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.13 0.000 0.000 0.000 0.000 300 Module#method_added + 0.13 0.000 0.000 0.000 0.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.13 0.000 0.000 0.000 0.000 23 String#split + 0.12 0.000 0.000 0.000 0.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.12 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.12 0.000 0.000 0.000 0.000 26 Array#flatten + 0.12 0.000 0.000 0.000 0.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.12 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.12 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.11 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.11 0.000 0.000 0.000 0.000 15 Regexp#=~ + 0.11 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.11 0.000 0.000 0.000 0.000 19 Array#map! + 0.10 0.000 0.000 0.000 0.000 139 Module#=== + 0.10 0.000 0.000 0.000 0.000 15 Array#map + 0.09 0.001 0.000 0.000 0.001 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.09 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.09 0.000 0.000 0.000 0.000 1 #read + 0.08 0.023 0.000 0.000 0.023 1 Object#work /home/pavel/Документы/rails-optimization-2-task1/task-2.rb:4 + 0.08 0.000 0.000 0.000 0.000 150 Kernel#untaint + 0.08 0.000 0.000 0.000 0.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.08 0.002 0.000 0.000 0.002 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.07 0.000 0.000 0.000 0.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.07 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.07 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.07 0.000 0.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.07 0.000 0.000 0.000 0.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.07 0.001 0.000 0.000 0.001 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.07 0.000 0.000 0.000 0.000 6 String#scan + 0.07 0.000 0.000 0.000 0.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.07 0.000 0.000 0.000 0.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.07 0.000 0.000 0.000 0.000 10 Array#all? + 0.07 0.000 0.000 0.000 0.000 2 Kernel#loop + 0.07 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.06 0.010 0.000 0.000 0.010 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.06 0.000 0.000 0.000 0.000 5 #exist? + 0.06 0.000 0.000 0.000 0.000 56 String#to_i + 0.06 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.06 0.001 0.000 0.000 0.001 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.06 0.023 0.000 0.000 0.023 1 [global]# ruby-prof-flat.rb:7 + 0.06 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.06 0.000 0.000 0.000 0.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.06 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.06 0.000 0.000 0.000 0.000 11 Array#sort + 0.06 0.000 0.000 0.000 0.000 11 Array#join + 0.06 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.06 0.000 0.000 0.000 0.000 24 Array#reverse_each + 0.06 0.000 0.000 0.000 0.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.05 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.05 0.000 0.000 0.000 0.000 17 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.05 0.000 0.000 0.000 0.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.05 0.000 0.000 0.000 0.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.05 0.000 0.000 0.000 0.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.05 0.000 0.000 0.000 0.000 8 #dirname + 0.05 0.000 0.000 0.000 0.000 13 Kernel#dup + 0.05 0.000 0.000 0.000 0.000 12 #[] + 0.05 0.000 0.000 0.000 0.000 2 Set#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:93 + 0.05 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.05 0.000 0.000 0.000 0.000 66 #current + 0.04 0.000 0.000 0.000 0.000 48 String#upcase + 0.04 0.000 0.000 0.000 0.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.04 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.04 0.000 0.000 0.000 0.000 30 Object#browser /home/pavel/Документы/rails-optimization-2-task1/task-2.rb:28 + 0.04 0.000 0.000 0.000 0.000 3 Array#reject! + 0.04 0.000 0.000 0.000 0.000 27 Hash#delete + 0.04 0.001 0.000 0.000 0.001 18 *Enumerable#find + 0.04 0.000 0.000 0.000 0.000 6 Array#index + 0.04 0.000 0.000 0.000 0.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.04 0.000 0.000 0.000 0.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.04 0.000 0.000 0.000 0.000 11 Comparable#>= + 0.04 0.000 0.000 0.000 0.000 1 NilClass#nil? + 0.03 0.000 0.000 0.000 0.000 1 Hash#each_value + 0.03 0.000 0.000 0.000 0.000 7 Array#select + 0.03 0.000 0.000 0.000 0.000 16 Array#== + 0.03 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.03 0.000 0.000 0.000 0.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.03 0.000 0.000 0.000 0.000 4 BasicObject#instance_eval + 0.03 0.000 0.000 0.000 0.000 43 Array#first + 0.03 0.000 0.000 0.000 0.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.03 0.000 0.000 0.000 0.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.03 0.000 0.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.03 0.000 0.000 0.000 0.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.03 0.000 0.000 0.000 0.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.03 0.000 0.000 0.000 0.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.03 0.000 0.000 0.000 0.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.03 0.000 0.000 0.000 0.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.03 0.000 0.000 0.000 0.000 23 Class#inherited + 0.03 0.000 0.000 0.000 0.000 2 #pwd + 0.03 0.002 0.000 0.000 0.002 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.03 0.010 0.000 0.000 0.010 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.03 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.03 0.000 0.000 0.000 0.000 4 Thread::Mutex#synchronize + 0.03 0.002 0.000 0.000 0.002 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.03 0.001 0.000 0.000 0.001 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.03 0.000 0.000 0.000 0.000 4 Array#uniq + 0.03 0.000 0.000 0.000 0.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.03 0.000 0.000 0.000 0.000 12 Enumerable#drop_while + 0.03 0.000 0.000 0.000 0.000 26 String#to_s + 0.03 0.000 0.000 0.000 0.000 2 Module#included + 0.02 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.02 0.000 0.000 0.000 0.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.02 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.02 0.000 0.000 0.000 0.000 5 Class#initialize + 0.02 0.000 0.000 0.000 0.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.02 0.010 0.000 0.000 0.010 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.02 0.000 0.000 0.000 0.000 6 String#=~ + 0.02 0.000 0.000 0.000 0.000 13 Array#sort! + 0.02 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.02 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.02 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.02 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.02 0.000 0.000 0.000 0.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.02 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.02 0.000 0.000 0.000 0.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.02 0.000 0.000 0.000 0.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.02 0.000 0.000 0.000 0.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.02 0.000 0.000 0.000 0.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.02 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.02 0.000 0.000 0.000 0.000 33 String#eql? + 0.02 0.000 0.000 0.000 0.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.02 0.000 0.000 0.000 0.000 1 #utc + 0.02 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.02 0.000 0.000 0.000 0.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.02 0.000 0.000 0.000 0.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.02 0.013 0.000 0.000 0.013 1 #new + 0.02 0.000 0.000 0.000 0.000 1 Hash#each_key + 0.02 0.000 0.000 0.000 0.000 12 Module#private + 0.02 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.02 0.000 0.000 0.000 0.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.02 0.000 0.000 0.000 0.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.02 0.000 0.000 0.000 0.000 17 Array#uniq! + 0.02 0.000 0.000 0.000 0.000 23 Kernel#class + 0.02 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.02 0.000 0.000 0.000 0.000 1 Object#prepare_report /home/pavel/Документы/rails-optimization-2-task1/task-2.rb:56 + 0.02 0.000 0.000 0.000 0.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.02 0.000 0.000 0.000 0.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 0.000 0.000 0.000 0.000 1 #disable + 0.02 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.02 0.000 0.000 0.000 0.000 13 Array#last + 0.02 0.000 0.000 0.000 0.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.02 0.000 0.000 0.000 0.000 4 String#gsub + 0.02 0.000 0.000 0.000 0.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.02 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.02 0.000 0.000 0.000 0.000 8 Array#compact + 0.02 0.000 0.000 0.000 0.000 1 IO#write + 0.02 0.000 0.000 0.000 0.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.02 0.000 0.000 0.000 0.000 2 Module#define_method + 0.02 0.000 0.000 0.000 0.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.02 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.02 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.02 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.02 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.02 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.02 0.000 0.000 0.000 0.000 15 String#chomp + 0.02 0.000 0.000 0.000 0.000 6 Array#slice! + 0.02 0.000 0.000 0.000 0.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.01 0.000 0.000 0.000 0.000 4 Kernel#!~ + 0.01 0.000 0.000 0.000 0.000 1 Enumerable#map + 0.01 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.01 0.000 0.000 0.000 0.000 3 Enumerable#partition + 0.01 0.000 0.000 0.000 0.000 3 Enumerable#find_all + 0.01 0.000 0.000 0.000 0.000 15 Array#reverse + 0.01 0.000 0.000 0.000 0.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.01 0.000 0.000 0.000 0.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 0.000 0.000 0.000 0.000 14 Array#shift + 0.01 0.000 0.000 0.000 0.000 12 Array#include? + 0.01 0.000 0.000 0.000 0.000 1 String#freeze + 0.01 0.000 0.000 0.000 0.000 2 Module#extend_object + 0.01 0.000 0.000 0.000 0.000 17 Array#compact! + 0.01 0.000 0.000 0.000 0.000 2 #basename + 0.01 0.000 0.000 0.000 0.000 1 Module#attr_reader + 0.01 0.000 0.000 0.000 0.000 6 Array#concat + 0.01 0.000 0.000 0.000 0.000 2 Module#include + 0.01 0.000 0.000 0.000 0.000 6 Enumerable#reduce + 0.01 0.000 0.000 0.000 0.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.01 0.000 0.000 0.000 0.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.01 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.01 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.01 0.000 0.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 0.000 0.000 0.000 0.000 1 Object#browser_decoration /home/pavel/Документы/rails-optimization-2-task1/task-2.rb:24 + 0.01 0.000 0.000 0.000 0.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.01 0.000 0.000 0.000 0.000 1 Hash#key? + 0.01 0.000 0.000 0.000 0.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.01 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.01 0.000 0.000 0.000 0.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.01 0.000 0.000 0.000 0.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.01 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.01 0.000 0.000 0.000 0.000 1 Module#private_class_method + 0.01 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.01 0.000 0.000 0.000 0.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.01 0.000 0.000 0.000 0.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.01 0.000 0.000 0.000 0.000 4 Symbol#to_s + 0.01 0.000 0.000 0.000 0.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.01 0.000 0.000 0.000 0.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.01 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.01 0.000 0.000 0.000 0.000 2 Hash#hash + 0.01 0.000 0.000 0.000 0.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.01 0.000 0.000 0.000 0.000 2 Kernel#extend + 0.01 0.000 0.000 0.000 0.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.01 0.000 0.000 0.000 0.000 6 Integer#to_s + 0.01 0.010 0.000 0.000 0.010 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 0.000 0.000 0.000 0.000 1 Module#undef_method + 0.01 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.01 0.000 0.000 0.000 0.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.01 0.000 0.000 0.000 0.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.01 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.01 0.010 0.000 0.000 0.010 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.01 0.000 0.000 0.000 0.000 5 String#=== + 0.01 0.000 0.000 0.000 0.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.01 0.000 0.000 0.000 0.000 1 Hash#merge + 0.01 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.01 0.000 0.000 0.000 0.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.01 0.000 0.000 0.000 0.000 1 #new + 0.01 0.000 0.000 0.000 0.000 1 String#capitalize + 0.01 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.01 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.01 0.010 0.000 0.000 0.010 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.01 0.000 0.000 0.000 0.000 2 Hash#initialize + 0.01 0.000 0.000 0.000 0.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.01 0.000 0.000 0.000 0.000 2 Module#append_features + 0.01 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.01 0.000 0.000 0.000 0.000 3 String#strip + 0.01 0.000 0.000 0.000 0.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.01 0.000 0.000 0.000 0.000 1 Kernel#binding + 0.01 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.01 0.000 0.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.01 0.000 0.000 0.000 0.000 4 Module#protected + 0.01 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.01 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.01 0.000 0.000 0.000 0.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.01 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.01 0.000 0.000 0.000 0.000 4 String#to_str + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 0.000 0.000 0.000 0.000 1 Module#const_get + 0.01 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.01 0.000 0.000 0.000 0.000 1 Array#* + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.01 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.01 0.000 0.000 0.000 0.000 2 Exception#message + 0.01 0.000 0.000 0.000 0.000 1 Array#insert + 0.01 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 1 Enumerable#each_entry + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Enumerable#each_with_index + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 1 Enumerable#grep + 0.00 0.000 0.000 0.000 0.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 String#downcase + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 0.000 0.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + +* recursively called methods + +Columns are: + + %self - The percentage of time spent in this method, derived from self_time/total_time. + total - The time spent in this method and its children. + self - The time spent in this method. + wait - The amount of time this method waited for other threads. + child - The time spent in this method's children. + calls - The number of times this method was called. + name - The name of the method. + location - The location of the method. + +The interpretation of method names is: + + * MyObject#test - An instance method "test" of the class "MyObject" + * #test - The <> characters indicate a method on a singleton class. diff --git a/benchmarks/CPU/ruby-prof-flat.rb b/benchmarks/CPU/ruby-prof-flat.rb new file mode 100644 index 00000000..199c950d --- /dev/null +++ b/benchmarks/CPU/ruby-prof-flat.rb @@ -0,0 +1,12 @@ +require 'ruby-prof' +require_relative '../../task-2' + +RubyProf.measure_mode = RubyProf::WALL_TIME + +result = RubyProf.profile do + GC.disable + work('../../data.txt') +end + +printer = RubyProf::FlatPrinter.new(result) +printer.print(File.open("flat.txt", "w+")) \ No newline at end of file diff --git a/benchmarks/RAM/diagram.jpg b/benchmarks/RAM/diagram.jpg new file mode 100644 index 00000000..a53b9c64 Binary files /dev/null and b/benchmarks/RAM/diagram.jpg differ diff --git a/benchmarks/RAM/memory_profiler.rb b/benchmarks/RAM/memory_profiler.rb new file mode 100644 index 00000000..be99b9c8 --- /dev/null +++ b/benchmarks/RAM/memory_profiler.rb @@ -0,0 +1,6 @@ +require 'memory_profiler' +require_relative '../../task-2' + +MemoryProfiler.report do + work('../../data_large.txt') +end.pretty_print(to_file: 'reports/memory_profiler.txt', scale_bytes: true) diff --git a/benchmarks/RAM/reports/flamegraph b/benchmarks/RAM/reports/flamegraph new file mode 100644 index 00000000..864f096d --- /dev/null +++ b/benchmarks/RAM/reports/flamegraph @@ -0,0 +1,1257 @@ +flamegraph([ +{"x":1,"y":3,"width":8876,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3,"y":4,"width":1,"frame_id":46991115297400,"frame":"Set#initialize","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":10,"y":4,"width":13,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":24,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":36,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":48,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":60,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":72,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":84,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":96,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":108,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":120,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":132,"y":4,"width":12,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":145,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":157,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":169,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":181,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":193,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":205,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":217,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":229,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":241,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":253,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":265,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":277,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":289,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":301,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":313,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":325,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":337,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":349,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":361,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":373,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":384,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":396,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":408,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":420,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":431,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":443,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":455,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":467,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":479,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":491,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":502,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":514,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":525,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":537,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":549,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":561,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":573,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":584,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":596,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":608,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":619,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":631,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":643,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":655,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":667,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":679,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":691,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":703,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":715,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":726,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":738,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":749,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":761,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":773,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":785,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":797,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":809,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":821,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":833,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":844,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":856,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":868,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":879,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":890,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":902,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":914,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":926,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":938,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":950,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":962,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":974,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":986,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":997,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1009,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1021,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1033,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1045,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1057,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1069,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1081,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1093,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1105,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1117,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1129,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1140,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1152,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1164,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1176,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1188,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1200,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1212,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1223,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1235,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1247,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1258,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1269,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1281,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1293,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1305,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1317,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1329,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1341,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1353,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1365,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1376,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1388,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1400,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1412,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1424,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1436,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1448,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1460,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1471,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1483,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1494,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1506,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1517,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1529,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1540,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1551,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1563,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1575,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1587,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1598,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1609,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1620,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1631,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1642,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1654,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1666,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1678,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1689,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1700,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1711,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1722,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1734,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1746,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1758,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1770,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1781,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1793,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1805,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1816,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1828,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1840,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1852,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1864,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1875,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1887,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1898,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1910,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1922,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1934,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1945,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1957,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1968,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1980,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1992,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2004,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2016,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2028,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2039,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2050,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2062,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2074,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2086,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2097,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2108,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2120,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2131,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2142,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2154,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2166,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2178,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2190,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2201,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2212,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2223,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2234,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2246,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2258,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2269,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2280,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2291,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2302,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2313,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2324,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2336,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2348,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2360,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2372,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2383,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2395,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2407,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2418,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2429,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2441,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2452,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2463,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2475,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2487,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2499,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2510,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2522,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2534,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2545,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2557,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2568,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2580,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2591,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2603,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2615,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2627,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2639,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2651,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2662,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2674,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2686,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2697,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2708,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2719,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2731,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2742,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2754,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2766,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2778,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2789,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2801,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2813,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2825,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2837,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2848,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2859,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2871,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2882,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2893,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2904,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2916,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2927,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2938,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2949,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2960,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2971,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2983,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2994,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3005,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3017,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3028,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3039,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3051,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3062,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3074,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3086,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3097,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3108,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3120,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3132,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3143,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3154,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3165,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3176,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3187,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3198,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3210,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3221,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3232,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3243,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3255,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3267,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3278,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3289,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3301,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3312,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3323,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3335,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3347,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3358,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3370,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3382,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3393,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3405,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3416,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3428,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3439,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3450,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3461,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3472,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3483,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3494,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3506,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3518,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3530,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3541,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3552,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3563,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3574,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3585,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3597,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3609,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3620,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3631,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3642,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3653,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3664,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3675,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3686,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3698,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3709,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3721,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3732,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3744,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3755,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3767,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3778,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3790,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3802,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3813,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3824,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3836,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3847,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3859,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3870,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3882,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3893,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3904,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3916,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3927,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3938,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3949,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3960,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3971,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3983,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3994,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4005,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4017,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4028,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4040,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4051,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4062,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4074,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4085,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4097,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4108,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4120,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4131,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4142,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4153,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4164,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4175,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4187,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4199,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4210,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4222,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4233,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4244,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4255,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4266,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4277,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4289,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4300,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4312,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4323,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4334,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4346,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4357,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4368,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4379,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4390,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4401,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4413,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4424,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4435,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4446,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4458,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4470,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4481,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4492,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4503,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4514,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4525,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4537,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4548,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4559,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4570,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4581,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4592,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4604,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4615,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4626,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4638,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4649,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4660,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4671,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4683,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4694,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4705,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4717,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4728,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4739,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4751,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4762,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4773,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4784,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4796,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4807,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4818,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4830,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4841,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4853,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4864,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4875,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4886,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4897,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4908,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4919,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4930,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4942,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4954,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4965,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4976,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4987,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4998,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5009,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5020,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5031,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5042,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5054,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5066,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5078,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5089,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5100,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5111,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5123,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5135,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5146,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5158,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5169,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5181,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5192,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5203,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5214,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5225,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5236,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5247,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5258,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5269,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5280,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5291,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5303,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5314,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5325,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5336,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5347,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5359,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5370,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5381,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5392,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5404,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5415,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5427,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5438,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5449,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5460,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5471,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5482,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5494,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5505,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5516,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5528,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5539,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5550,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5561,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5572,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5583,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5595,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5606,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5618,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5629,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5640,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5651,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5662,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5673,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5685,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5696,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5707,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5718,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5729,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5740,"y":4,"width":10,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5751,"y":4,"width":11,"frame_id":46991115550300,"frame":"Object#work","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5762,"y":4,"width":1115,"frame_id":46991115550220,"frame":"Object#prepare_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":10,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":18,"y":5,"width":5,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":25,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":37,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":49,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":61,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":73,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":85,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":97,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":109,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":120,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":128,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":133,"y":5,"width":11,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":146,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":158,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":170,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":182,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":193,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":201,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":206,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":218,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":230,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":242,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":254,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":266,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":278,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":290,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":302,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":314,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":325,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":333,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":338,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":350,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":362,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":374,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":385,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":397,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":409,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":421,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":431,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":439,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":444,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":456,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":468,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":480,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":492,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":503,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":515,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":526,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":538,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":549,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":557,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":562,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":574,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":585,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":596,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":604,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":609,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":620,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":632,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":644,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":656,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":668,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":680,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":692,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":703,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":711,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":716,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":727,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":739,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":750,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":762,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":774,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":786,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":798,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":810,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":821,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":829,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":834,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":845,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":857,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":869,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":880,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":891,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":903,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":914,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":922,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":927,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":938,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":946,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":951,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":963,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":975,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":987,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":998,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1009,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1017,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1022,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1034,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1046,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1057,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1065,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1070,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1082,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1094,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1106,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1118,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1130,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1140,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1148,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1153,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1165,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1177,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1189,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1201,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1213,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1224,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1236,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1248,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1259,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1269,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1277,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1282,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1294,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1306,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1318,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1330,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1342,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1354,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1366,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1377,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1388,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1396,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1401,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1412,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1420,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1425,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1437,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1448,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1456,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1461,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1472,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1484,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1495,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1507,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1518,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1530,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1541,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1551,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1559,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1564,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1576,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1588,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1599,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1610,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1621,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1632,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1642,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1650,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1655,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1667,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1679,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1690,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1701,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1712,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1722,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1730,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1735,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1747,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1759,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1771,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1781,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1789,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1794,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1806,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1817,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1829,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1841,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1852,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1860,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1865,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1875,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1883,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1888,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1899,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1911,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1922,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1930,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1935,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1945,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1953,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1958,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1969,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1981,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":1993,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2004,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2012,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2017,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2029,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2040,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2051,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2062,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2070,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2075,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2087,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2098,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2108,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2116,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2121,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2132,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2142,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2150,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2155,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2167,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2179,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2191,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2202,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2213,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2224,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2234,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2242,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2247,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2259,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2270,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2281,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2292,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2303,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2314,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2325,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2337,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2348,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2356,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2361,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2373,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2384,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2396,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2408,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2419,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2430,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2442,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2453,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2463,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2471,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2476,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2488,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2500,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2511,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2523,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2535,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2545,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2553,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2558,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2569,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2581,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2592,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2604,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2616,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2627,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2635,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2640,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2652,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2662,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2670,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2675,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2687,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2698,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2709,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2720,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2732,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2743,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2754,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2762,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2767,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2779,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2790,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2801,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2809,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2814,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2826,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2838,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2849,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2860,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2872,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2883,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2894,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2904,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2912,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2917,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2928,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2939,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2950,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2961,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2972,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2984,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":2995,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3005,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3013,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3018,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3029,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3040,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3052,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3062,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3070,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3075,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3087,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3098,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3109,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3120,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3128,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3133,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3144,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3155,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3166,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3177,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3188,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3199,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3211,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3222,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3233,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3243,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3251,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3256,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3268,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3279,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3289,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3297,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3302,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3313,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3324,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3335,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3343,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3348,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3359,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3371,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3383,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3393,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3401,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3406,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3417,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3429,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3440,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3451,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3462,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3473,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3484,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3495,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3506,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3514,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3519,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3531,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3542,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3553,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3564,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3575,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3586,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3597,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3605,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3610,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3621,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3632,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3643,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3654,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3665,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3676,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3686,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3694,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3699,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3710,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3722,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3733,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3745,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3756,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3768,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3778,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3786,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3791,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3803,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3814,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3825,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3837,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3848,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3860,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3870,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3878,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3883,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3894,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3904,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3912,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3917,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3928,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3939,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3950,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3961,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3972,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3984,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":3995,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4005,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4013,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4018,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4029,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4041,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4052,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4063,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4075,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4086,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4098,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4108,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4116,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4121,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4132,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4143,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4154,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4165,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4176,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4187,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4195,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4200,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4210,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4218,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4223,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4234,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4245,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4256,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4267,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4277,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4285,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4290,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4301,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4313,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4324,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4334,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4342,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4347,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4358,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4369,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4380,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4391,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4402,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4414,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4425,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4436,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4446,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4454,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4459,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4471,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4482,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4493,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4504,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4515,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4525,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4533,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4538,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4549,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4560,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4571,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4582,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4593,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4605,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4616,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4626,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4634,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4639,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4650,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4661,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4672,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4684,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4695,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4705,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4713,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4718,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4729,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4739,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4747,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4752,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4763,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4774,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4784,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4792,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4797,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4808,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4818,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4826,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4831,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4842,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4854,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4865,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4876,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4887,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4898,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4909,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4920,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4930,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4938,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4943,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4955,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4966,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4977,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4988,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":4999,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5010,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5021,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5032,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5042,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5050,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5055,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5066,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5074,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5079,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5090,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5101,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5111,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5119,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5124,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5136,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5146,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5154,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5159,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5169,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5177,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5182,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5193,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5204,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5215,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5226,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5237,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5248,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5259,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5270,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5281,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5291,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5299,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5304,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5315,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5326,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5337,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5348,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5360,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5371,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5382,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5392,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5400,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5405,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5416,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5428,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5439,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5450,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5461,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5472,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5483,"y":5,"width":10,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5495,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5506,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5516,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5524,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5529,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5540,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5551,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5562,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5573,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5583,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5591,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5596,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5606,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5614,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5619,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5630,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5641,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5652,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5663,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5673,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5681,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5686,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5697,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5708,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5719,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5730,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5741,"y":5,"width":9,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5751,"y":5,"width":7,"frame_id":46991115550280,"frame":"Object#user_name","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5759,"y":5,"width":3,"frame_id":46991115550240,"frame":"Object#make_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":5765,"y":5,"width":2,"frame_id":46991115362200,"frame":"Set#each","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5769,"y":5,"width":1108,"frame_id":46991115550220,"frame":"Object#prepare_report","file":"/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb"} +,{"x":32,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":44,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":56,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":68,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":80,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":92,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":104,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":116,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":140,"y":6,"width":2,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":153,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":165,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":177,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":189,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":213,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":225,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":237,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":249,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":261,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":273,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":285,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":297,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":309,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":321,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":345,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":357,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":369,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":392,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":404,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":416,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":451,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":463,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":475,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":487,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":510,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":533,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":545,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":569,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":592,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":627,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":639,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":651,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":663,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":675,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":687,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":699,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":734,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":757,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":769,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":781,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":793,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":805,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":817,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":852,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":864,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":898,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":910,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":934,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":958,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":970,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":982,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1005,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1029,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1041,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1053,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1077,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1089,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1101,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1113,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1125,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1160,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1172,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1184,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1196,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1208,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1231,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1243,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1289,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1301,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1313,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1325,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1337,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1349,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1361,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1384,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1408,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1432,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1444,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1479,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1502,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1525,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1571,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1583,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1662,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1674,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1742,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1754,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1766,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1801,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1824,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1836,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1848,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1906,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1918,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1976,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":1988,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2000,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2024,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2058,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2082,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2162,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2174,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2186,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2254,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2332,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2344,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2368,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2391,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2403,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2437,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2483,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2495,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2518,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2530,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2576,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2599,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2611,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2623,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2647,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2682,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2727,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2750,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2774,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2797,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2821,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2833,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2867,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":2979,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3047,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3082,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3116,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3206,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3263,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3331,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3366,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3378,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3424,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3502,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3526,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3593,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3717,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3740,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3763,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3798,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3832,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3855,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":3979,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4036,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4070,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4093,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4183,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4308,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4409,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4466,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4600,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4679,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4849,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":4950,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5062,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5131,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5355,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5423,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +,{"x":5490,"y":6,"width":1,"frame_id":46991115362160,"frame":"Set#add","file":"/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb"} +]) diff --git a/benchmarks/RAM/reports/flat-10.txt b/benchmarks/RAM/reports/flat-10.txt new file mode 100644 index 00000000..41094846 --- /dev/null +++ b/benchmarks/RAM/reports/flat-10.txt @@ -0,0 +1,330 @@ +Measure Mode: memory +Thread ID: 46986680482140 +Fiber ID: 46986681215120 +Total: 337856.000000 +Sort by: self_time + + %self total self wait child calls name location + 73.29 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 3.91 325056.000 13224.000 0.000 311832.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 3.45 21328.000 11672.000 0.000 9656.000 1 Kernel#eval + 1.94 6560.000 6560.000 0.000 0.000 229 #file? + 1.94 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 1.68 5680.000 5680.000 0.000 0.000 71 #join + 0.92 3120.000 3120.000 0.000 0.000 15 String#split + 0.88 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.76 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.62 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.54 1840.000 1840.000 0.000 0.000 6 String#scan + 0.50 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.49 2904.000 1664.000 0.000 1240.000 10 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 0.47 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.43 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.43 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.42 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.40 6984.000 1360.000 0.000 5624.000 1 #foreach + 0.37 2040.000 1240.000 0.000 800.000 15 Array#map + 0.37 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.33 1120.000 1120.000 0.000 0.000 1 #dump + 0.32 1080.000 1080.000 0.000 0.000 27 String#upcase + 0.25 856.000 856.000 0.000 0.000 4 Array#uniq + 0.25 337816.000 856.000 0.000 336960.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.23 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.20 680.000 680.000 0.000 0.000 9 Array#sort + 0.18 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.17 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.17 560.000 560.000 0.000 0.000 14 Array#reverse + 0.14 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.14 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.14 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.13 440.000 440.000 0.000 0.000 8 #dirname + 0.12 400.000 400.000 0.000 0.000 2 Module#define_method + 0.12 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.11 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.09 320.000 320.000 0.000 0.000 8 Array#compact + 0.09 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.09 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.09 480.000 320.000 0.000 160.000 8 Array#join + 0.09 320.000 320.000 0.000 0.000 8 String#chomp + 0.09 312.000 312.000 0.000 0.000 1 #read + 0.08 280.000 280.000 0.000 0.000 7 Array#select + 0.08 280.000 280.000 0.000 0.000 10 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.07 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.07 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.07 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.07 240.000 240.000 0.000 0.000 6 Array#slice! + 0.07 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.07 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.07 240.000 240.000 0.000 0.000 2 #pwd + 0.07 1040.000 240.000 0.000 800.000 1 Hash#each_value + 0.07 240.000 240.000 0.000 0.000 4 String#=~ + 0.07 232.000 232.000 0.000 0.000 1 Hash#merge + 0.07 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.07 232.000 232.000 0.000 0.000 1 Hash#key? + 0.07 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.07 22032.000 232.000 0.000 21800.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.06 200.000 200.000 0.000 0.000 5 Class#initialize + 0.06 200.000 200.000 0.000 0.000 4 String#gsub + 0.06 200.000 200.000 0.000 0.000 5 #exist? + 0.05 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.05 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.05 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.05 160.000 160.000 0.000 0.000 2 #basename + 0.05 160.000 160.000 0.000 0.000 4 Integer#to_s + 0.04 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.04 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.04 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.04 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.04 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.04 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.04 120.000 120.000 0.000 0.000 3 String#strip + 0.04 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.04 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.04 327784.000 120.000 0.000 327664.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.02 80.000 80.000 0.000 0.000 1 IO#write + 0.02 80.000 80.000 0.000 0.000 1 #new + 0.02 80.000 80.000 0.000 0.000 1 String#capitalize + 0.02 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.02 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.02 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.02 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.02 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.02 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.02 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.02 327624.000 80.000 0.000 327544.000 44 *Array#each + 0.02 360.000 80.000 0.000 280.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.02 440.000 80.000 0.000 360.000 1 Enumerable#map + 0.02 640.000 80.000 0.000 560.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.01 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 40.000 40.000 0.000 0.000 1 Array#* + 0.01 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.01 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.01 40.000 40.000 0.000 0.000 1 String#downcase + 0.01 40.000 40.000 0.000 0.000 2 Module#append_features + 0.01 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.01 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.01 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.01 40.000 40.000 0.000 0.000 6 Array#index + 0.01 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 40.000 40.000 0.000 0.000 1 #utc + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.01 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.01 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.01 327744.000 40.000 0.000 327704.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.01 327824.000 40.000 0.000 327784.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 327864.000 40.000 0.000 327824.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 327904.000 40.000 0.000 327864.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 327944.000 40.000 0.000 327904.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.01 40.000 40.000 0.000 0.000 1 File#initialize + 0.01 80.000 40.000 0.000 40.000 1 #new + 0.01 337856.000 40.000 0.000 337816.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 1120.000 0.000 0.000 1120.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 2568.000 0.000 0.000 2568.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22032.000 0.000 0.000 22032.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45832.000 0.000 0.000 45832.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48912.000 0.000 0.000 48912.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 280.000 0.000 0.000 280.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 1680.000 0.000 0.000 1680.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 38 String#to_i + 0.00 0.000 0.000 0.000 0.000 2 Kernel#!~ + 0.00 640.000 0.000 0.000 640.000 16 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 18 String#eql? + 0.00 0.000 0.000 0.000 0.000 28 Array#first + 0.00 0.000 0.000 0.000 0.000 1 NilClass#nil? + 0.00 0.000 0.000 0.000 0.000 2 Hash#initialize + 0.00 624.000 0.000 0.000 624.000 2 Set#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:93 + 0.00 0.000 0.000 0.000 0.000 1 #disable + +* recursively called methods + +Columns are: + + %self - The percentage of time spent in this method, derived from self_time/total_time. + total - The time spent in this method and its children. + self - The time spent in this method. + wait - The amount of time this method waited for other threads. + child - The time spent in this method's children. + calls - The number of times this method was called. + name - The name of the method. + location - The location of the method. + +The interpretation of method names is: + + * MyObject#test - An instance method "test" of the class "MyObject" + * #test - The <> characters indicate a method on a singleton class. diff --git a/benchmarks/RAM/reports/flat-100.txt b/benchmarks/RAM/reports/flat-100.txt new file mode 100644 index 00000000..e054f286 --- /dev/null +++ b/benchmarks/RAM/reports/flat-100.txt @@ -0,0 +1,330 @@ +Measure Mode: memory +Thread ID: 47151625263460 +Fiber ID: 47151625997060 +Total: 411640.000000 +Sort by: self_time + + %self total self wait child calls name location + 60.15 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 6.76 27840.000 27840.000 0.000 0.000 105 String#split + 3.21 325096.000 13224.000 0.000 311872.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 3.19 26568.000 13128.000 0.000 13440.000 100 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 3.07 66648.000 12640.000 0.000 54008.000 1 #foreach + 2.85 21368.000 11712.000 0.000 9656.000 1 Kernel#eval + 2.42 9960.000 9960.000 0.000 0.000 249 String#upcase + 1.59 6560.000 6560.000 0.000 0.000 229 #file? + 1.59 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 1.55 6400.000 6400.000 0.000 0.000 1 #dump + 1.38 5680.000 5680.000 0.000 0.000 71 #join + 0.84 3440.000 3440.000 0.000 0.000 86 String#chomp + 0.72 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.72 2960.000 2960.000 0.000 0.000 88 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.62 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.61 2520.000 2520.000 0.000 0.000 33 Array#sort + 0.51 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.45 1840.000 1840.000 0.000 0.000 6 String#scan + 0.43 2880.000 1760.000 0.000 1120.000 44 Array#join + 0.41 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.41 7200.000 1680.000 0.000 5520.000 1 Hash#each_value + 0.39 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.35 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.35 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.35 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.30 2040.000 1240.000 0.000 800.000 15 Array#map + 0.30 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.27 1120.000 1120.000 0.000 0.000 28 Integer#to_s + 0.25 1040.000 1040.000 0.000 0.000 26 Array#reverse + 0.21 856.000 856.000 0.000 0.000 4 Array#uniq + 0.21 411600.000 856.000 0.000 410744.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.19 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.15 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.14 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.12 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.12 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.11 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.11 440.000 440.000 0.000 0.000 8 #dirname + 0.10 400.000 400.000 0.000 0.000 2 Module#define_method + 0.10 400.000 400.000 0.000 0.000 18 String#=~ + 0.10 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.09 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.08 320.000 320.000 0.000 0.000 8 Array#compact + 0.08 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.08 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.08 312.000 312.000 0.000 0.000 1 #read + 0.07 280.000 280.000 0.000 0.000 7 Array#select + 0.06 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.06 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.06 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.06 240.000 240.000 0.000 0.000 6 Array#slice! + 0.06 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.06 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.06 240.000 240.000 0.000 0.000 2 #pwd + 0.06 232.000 232.000 0.000 0.000 1 Hash#merge + 0.06 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.06 232.000 232.000 0.000 0.000 1 Hash#key? + 0.06 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.06 22072.000 232.000 0.000 21840.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.05 200.000 200.000 0.000 0.000 5 Class#initialize + 0.05 200.000 200.000 0.000 0.000 4 String#gsub + 0.05 200.000 200.000 0.000 0.000 5 #exist? + 0.04 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.04 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.04 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.04 160.000 160.000 0.000 0.000 2 #basename + 0.03 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.03 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.03 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.03 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.03 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.03 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.03 120.000 120.000 0.000 0.000 3 String#strip + 0.03 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.03 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.03 333104.000 120.000 0.000 332984.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.02 80.000 80.000 0.000 0.000 1 IO#write + 0.02 80.000 80.000 0.000 0.000 1 #new + 0.02 80.000 80.000 0.000 0.000 1 String#capitalize + 0.02 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.02 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.02 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.02 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.02 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.02 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.02 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.02 332944.000 80.000 0.000 332864.000 44 *Array#each + 0.02 3000.000 80.000 0.000 2920.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.02 3080.000 80.000 0.000 3000.000 1 Enumerable#map + 0.02 3280.000 80.000 0.000 3200.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.01 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 40.000 40.000 0.000 0.000 1 Array#* + 0.01 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.01 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.01 40.000 40.000 0.000 0.000 1 String#downcase + 0.01 40.000 40.000 0.000 0.000 2 Module#append_features + 0.01 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.01 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.01 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.01 40.000 40.000 0.000 0.000 6 Array#index + 0.01 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 40.000 40.000 0.000 0.000 1 #utc + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.01 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.01 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.01 333064.000 40.000 0.000 333024.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.01 333144.000 40.000 0.000 333104.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 333184.000 40.000 0.000 333144.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 333224.000 40.000 0.000 333184.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 333264.000 40.000 0.000 333224.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.01 40.000 40.000 0.000 0.000 1 File#initialize + 0.01 80.000 40.000 0.000 40.000 1 #new + 0.01 411640.000 40.000 0.000 411600.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 6400.000 0.000 0.000 6400.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 7848.000 0.000 0.000 7848.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22072.000 0.000 0.000 22072.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45872.000 0.000 0.000 45872.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48952.000 0.000 0.000 48952.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 2920.000 0.000 0.000 2920.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 10480.000 0.000 0.000 10480.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 228 String#to_i + 0.00 160.000 0.000 0.000 160.000 16 Kernel#!~ + 0.00 6880.000 0.000 0.000 6880.000 172 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 186 String#eql? + 0.00 0.000 0.000 0.000 0.000 196 Array#first + 0.00 0.000 0.000 0.000 0.000 1 NilClass#nil? + 0.00 0.000 0.000 0.000 0.000 2 Hash#initialize + 0.00 624.000 0.000 0.000 624.000 2 Set#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:93 + 0.00 0.000 0.000 0.000 0.000 1 #disable + +* recursively called methods + +Columns are: + + %self - The percentage of time spent in this method, derived from self_time/total_time. + total - The time spent in this method and its children. + self - The time spent in this method. + wait - The amount of time this method waited for other threads. + child - The time spent in this method's children. + calls - The number of times this method was called. + name - The name of the method. + location - The location of the method. + +The interpretation of method names is: + + * MyObject#test - An instance method "test" of the class "MyObject" + * #test - The <> characters indicate a method on a singleton class. diff --git a/benchmarks/RAM/reports/flat-100000.txt b/benchmarks/RAM/reports/flat-100000.txt new file mode 100644 index 00000000..ae761ab4 --- /dev/null +++ b/benchmarks/RAM/reports/flat-100000.txt @@ -0,0 +1,329 @@ +Measure Mode: memory +Thread ID: 47015272757600 +Fiber ID: 47015273490500 +Total: 2564204912.000000 +Sort by: self_time + + %self total self wait child calls name location + 34.72 890263600.000 890263600.000 0.000 0.000 3250945 String#split + 17.62 794686200.000 451718320.000 0.000 342967880.000 3250940 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 15.99 2095062320.000 410112920.000 0.000 1684949400.000 1 #foreach + 8.58 220083360.000 220083360.000 0.000 0.000 5502084 String#upcase + 8.45 216684840.000 216684840.000 0.000 0.000 1 #dump + 4.29 110037600.000 110037600.000 0.000 0.000 2750940 String#chomp + 2.92 74834200.000 74834200.000 0.000 0.000 984935 Array#sort + 2.30 98493080.000 59095880.000 0.000 39397200.000 1477397 Array#join + 2.30 252121240.000 59095800.000 0.000 193025440.000 1 Hash#each_value + 1.54 39397200.000 39397200.000 0.000 0.000 984930 Integer#to_s + 0.77 19699080.000 19699080.000 0.000 0.000 492477 Array#reverse + 0.50 12847280.000 12847280.000 0.000 0.000 643790 String#=~ + 0.01 276184.000 247648.000 0.000 28536.000 22 *Kernel#gem_original_require + 0.00 325136.000 13224.000 0.000 311912.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 0.00 21368.000 11712.000 0.000 9656.000 1 Kernel#eval + 0.00 8040.000 8040.000 0.000 0.000 2750942 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.00 6560.000 6560.000 0.000 0.000 229 #file? + 0.00 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 0.00 5680.000 5680.000 0.000 0.000 71 #join + 0.00 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.00 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.00 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.00 1840.000 1840.000 0.000 0.000 6 String#scan + 0.00 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.00 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.00 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.00 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.00 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.00 2040.000 1240.000 0.000 800.000 15 Array#map + 0.00 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.00 856.000 856.000 0.000 0.000 4 Array#uniq + 0.00 2564204872.000 856.000 0.000 2564204016.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.00 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.00 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.00 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.00 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.00 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.00 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.00 440.000 440.000 0.000 0.000 8 #dirname + 0.00 400.000 400.000 0.000 0.000 2 Module#define_method + 0.00 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.00 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.00 320.000 320.000 0.000 0.000 8 Array#compact + 0.00 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.00 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.00 312.000 312.000 0.000 0.000 1 #read + 0.00 280.000 280.000 0.000 0.000 7 Array#select + 0.00 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.00 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.00 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.00 240.000 240.000 0.000 0.000 6 Array#slice! + 0.00 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.00 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.00 240.000 240.000 0.000 0.000 2 #pwd + 0.00 232.000 232.000 0.000 0.000 1 Hash#merge + 0.00 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.00 232.000 232.000 0.000 0.000 1 Hash#key? + 0.00 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.00 22072.000 232.000 0.000 21840.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.00 200.000 200.000 0.000 0.000 5 Class#initialize + 0.00 200.000 200.000 0.000 0.000 4 String#gsub + 0.00 200.000 200.000 0.000 0.000 5 #exist? + 0.00 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.00 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.00 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.00 160.000 160.000 0.000 0.000 2 #basename + 0.00 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.00 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.00 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.00 33960.000 120.000 0.000 33840.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.00 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.00 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.00 120.000 120.000 0.000 0.000 3 String#strip + 0.00 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.00 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.00 217011584.000 120.000 0.000 217011464.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.00 80.000 80.000 0.000 0.000 1 IO#write + 0.00 80.000 80.000 0.000 0.000 1 #new + 0.00 80.000 80.000 0.000 0.000 1 String#capitalize + 0.00 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.00 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.00 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.00 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.00 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.00 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.00 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.00 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.00 217011424.000 80.000 0.000 217011344.000 44 *Array#each + 0.00 8080.000 80.000 0.000 8000.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.00 8160.000 80.000 0.000 8080.000 1 Enumerable#map + 0.00 8360.000 80.000 0.000 8280.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.00 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.00 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.00 40.000 40.000 0.000 0.000 1 Array#* + 0.00 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.00 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.00 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.00 40.000 40.000 0.000 0.000 1 String#downcase + 0.00 40.000 40.000 0.000 0.000 2 Module#append_features + 0.00 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.00 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.00 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.00 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.00 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.00 40.000 40.000 0.000 0.000 6 Array#index + 0.00 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.00 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.00 40.000 40.000 0.000 0.000 1 #utc + 0.00 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.00 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.00 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.00 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.00 217011544.000 40.000 0.000 217011504.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.00 217011624.000 40.000 0.000 217011584.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.00 217011664.000 40.000 0.000 217011624.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.00 217011704.000 40.000 0.000 217011664.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.00 217011744.000 40.000 0.000 217011704.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.00 40.000 40.000 0.000 0.000 1 File#initialize + 0.00 80.000 40.000 0.000 40.000 1 #new + 0.00 2564204912.000 40.000 0.000 2564204872.000 1 [global]# ./ruby-prof.rb:8 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 216684840.000 0.000 0.000 216684840.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 216686288.000 0.000 0.000 216686288.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22072.000 0.000 0.000 22072.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45872.000 0.000 0.000 45872.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48952.000 0.000 0.000 48952.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 8000.000 0.000 0.000 8000.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 252129600.000 0.000 0.000 252129600.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 6598228 String#to_i + 0.00 12847040.000 0.000 0.000 12847040.000 643788 Kernel#!~ + 0.00 220075200.000 0.000 0.000 220075200.000 5501880 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 6001880 String#eql? + 0.00 0.000 0.000 0.000 0.000 6001890 Array#first + 0.00 0.000 0.000 0.000 0.000 1 NilClass#nil? + 0.00 0.000 0.000 0.000 0.000 2 Hash#initialize + 0.00 624.000 0.000 0.000 624.000 2 Set#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:93 + +* recursively called methods + +Columns are: + + %self - The percentage of time spent in this method, derived from self_time/total_time. + total - The time spent in this method and its children. + self - The time spent in this method. + wait - The amount of time this method waited for other threads. + child - The time spent in this method's children. + calls - The number of times this method was called. + name - The name of the method. + location - The location of the method. + +The interpretation of method names is: + + * MyObject#test - An instance method "test" of the class "MyObject" + * #test - The <> characters indicate a method on a singleton class. diff --git a/benchmarks/RAM/reports/flat-20.txt b/benchmarks/RAM/reports/flat-20.txt new file mode 100644 index 00000000..d323f68e --- /dev/null +++ b/benchmarks/RAM/reports/flat-20.txt @@ -0,0 +1,307 @@ +Measure Mode: memory +Thread ID: 47391114033500 +Fiber ID: 47391114767160 +Total: 345808.000000 +Sort by: self_time + + %self total self wait child calls name location + 71.60 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 3.82 325096.000 13224.000 0.000 311872.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 3.39 21368.000 11712.000 0.000 9656.000 1 Kernel#eval + 1.90 6560.000 6560.000 0.000 0.000 229 #file? + 1.90 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 1.70 5880.000 5880.000 0.000 0.000 25 String#split + 1.64 5680.000 5680.000 0.000 0.000 71 #join + 0.86 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.78 5456.000 2696.000 0.000 2760.000 20 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 0.75 13536.000 2600.000 0.000 10936.000 1 #foreach + 0.74 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.64 2200.000 2200.000 0.000 0.000 55 String#upcase + 0.60 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.53 1840.000 1840.000 0.000 0.000 6 String#scan + 0.49 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.46 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.45 1560.000 1560.000 0.000 0.000 1 #dump + 0.42 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.42 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.41 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.36 2040.000 1240.000 0.000 800.000 15 Array#map + 0.36 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.25 856.000 856.000 0.000 0.000 4 Array#uniq + 0.25 345768.000 856.000 0.000 344912.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.24 840.000 840.000 0.000 0.000 11 Array#sort + 0.23 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.21 720.000 720.000 0.000 0.000 19 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.20 680.000 680.000 0.000 0.000 17 String#chomp + 0.17 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.17 600.000 600.000 0.000 0.000 15 Array#reverse + 0.16 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.14 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.14 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.13 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.13 440.000 440.000 0.000 0.000 8 #dirname + 0.13 680.000 440.000 0.000 240.000 11 Array#join + 0.12 400.000 400.000 0.000 0.000 2 Module#define_method + 0.11 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.10 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.10 1560.000 360.000 0.000 1200.000 1 Hash#each_value + 0.09 320.000 320.000 0.000 0.000 8 Array#compact + 0.09 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.09 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.09 312.000 312.000 0.000 0.000 1 #read + 0.08 280.000 280.000 0.000 0.000 7 Array#select + 0.07 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.07 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.07 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.07 240.000 240.000 0.000 0.000 6 Array#slice! + 0.07 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.07 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.07 240.000 240.000 0.000 0.000 2 #pwd + 0.07 240.000 240.000 0.000 0.000 6 Integer#to_s + 0.07 240.000 240.000 0.000 0.000 5 String#=~ + 0.07 232.000 232.000 0.000 0.000 1 Hash#merge + 0.07 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.07 232.000 232.000 0.000 0.000 1 Hash#key? + 0.07 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.07 22072.000 232.000 0.000 21840.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.06 200.000 200.000 0.000 0.000 5 Class#initialize + 0.06 200.000 200.000 0.000 0.000 4 String#gsub + 0.06 200.000 200.000 0.000 0.000 5 #exist? + 0.05 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.05 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.05 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.05 160.000 160.000 0.000 0.000 2 #basename + 0.03 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.03 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.03 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.03 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.03 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.03 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.03 120.000 120.000 0.000 0.000 3 String#strip + 0.03 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.03 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.03 328264.000 120.000 0.000 328144.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.02 80.000 80.000 0.000 0.000 1 IO#write + 0.02 80.000 80.000 0.000 0.000 1 #new + 0.02 80.000 80.000 0.000 0.000 1 String#capitalize + 0.02 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.02 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.02 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.02 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.02 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.02 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.02 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.02 328104.000 80.000 0.000 328024.000 44 *Array#each + 0.02 760.000 80.000 0.000 680.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.02 840.000 80.000 0.000 760.000 1 Enumerable#map + 0.02 1040.000 80.000 0.000 960.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.01 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 40.000 40.000 0.000 0.000 1 Array#* + 0.01 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.01 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.01 40.000 40.000 0.000 0.000 1 String#downcase + 0.01 40.000 40.000 0.000 0.000 2 Module#append_features + 0.01 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.01 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.01 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.01 40.000 40.000 0.000 0.000 6 Array#index + 0.01 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 40.000 40.000 0.000 0.000 1 #utc + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.01 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.01 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.01 328224.000 40.000 0.000 328184.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.01 328304.000 40.000 0.000 328264.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 328344.000 40.000 0.000 328304.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 328384.000 40.000 0.000 328344.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 328424.000 40.000 0.000 328384.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.01 40.000 40.000 0.000 0.000 1 File#initialize + 0.01 80.000 40.000 0.000 40.000 1 #new + 0.01 345808.000 40.000 0.000 345768.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 1560.000 0.000 0.000 1560.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 3008.000 0.000 0.000 3008.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22072.000 0.000 0.000 22072.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45872.000 0.000 0.000 45872.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48952.000 0.000 0.000 48952.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 680.000 0.000 0.000 680.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 2600.000 0.000 0.000 2600.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 60 String#to_i + 0.00 0.000 0.000 0.000 0.000 3 Kernel#!~ + 0.00 1360.000 0.000 0.000 1360.000 34 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 37 String#eql? diff --git a/benchmarks/RAM/reports/flat-30.txt b/benchmarks/RAM/reports/flat-30.txt new file mode 100644 index 00000000..e5ae38d9 --- /dev/null +++ b/benchmarks/RAM/reports/flat-30.txt @@ -0,0 +1,307 @@ +Measure Mode: memory +Thread ID: 47093623904620 +Fiber ID: 47093624646320 +Total: 354632.000000 +Sort by: self_time + + %self total self wait child calls name location + 69.82 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 3.73 325096.000 13224.000 0.000 311872.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 3.30 21368.000 11712.000 0.000 9656.000 1 Kernel#eval + 2.43 8600.000 8600.000 0.000 0.000 35 String#split + 1.85 6560.000 6560.000 0.000 0.000 229 #file? + 1.85 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 1.60 5680.000 5680.000 0.000 0.000 71 #join + 1.18 8160.000 4200.000 0.000 3960.000 30 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 1.09 20240.000 3880.000 0.000 16360.000 1 #foreach + 0.87 3080.000 3080.000 0.000 0.000 77 String#upcase + 0.84 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.72 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.70 2480.000 2480.000 0.000 0.000 1 #dump + 0.59 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.52 1840.000 1840.000 0.000 0.000 6 String#scan + 0.47 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.45 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.41 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.41 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.40 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.35 2040.000 1240.000 0.000 800.000 15 Array#map + 0.35 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.30 1080.000 1080.000 0.000 0.000 15 Array#sort + 0.28 1000.000 1000.000 0.000 0.000 25 String#chomp + 0.27 960.000 960.000 0.000 0.000 27 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.24 856.000 856.000 0.000 0.000 4 Array#uniq + 0.24 354592.000 856.000 0.000 353736.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.22 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.19 680.000 680.000 0.000 0.000 17 Array#reverse + 0.19 1080.000 680.000 0.000 400.000 17 Array#join + 0.17 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.17 2520.000 600.000 0.000 1920.000 1 Hash#each_value + 0.16 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.14 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.14 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.13 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.12 440.000 440.000 0.000 0.000 8 #dirname + 0.11 400.000 400.000 0.000 0.000 2 Module#define_method + 0.11 400.000 400.000 0.000 0.000 10 Integer#to_s + 0.11 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.10 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.09 320.000 320.000 0.000 0.000 8 Array#compact + 0.09 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.09 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.09 312.000 312.000 0.000 0.000 1 #read + 0.08 280.000 280.000 0.000 0.000 7 Array#select + 0.07 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.07 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.07 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.07 240.000 240.000 0.000 0.000 6 Array#slice! + 0.07 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.07 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.07 240.000 240.000 0.000 0.000 2 #pwd + 0.07 240.000 240.000 0.000 0.000 6 String#=~ + 0.07 232.000 232.000 0.000 0.000 1 Hash#merge + 0.07 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.07 232.000 232.000 0.000 0.000 1 Hash#key? + 0.07 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.07 22072.000 232.000 0.000 21840.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.06 200.000 200.000 0.000 0.000 5 Class#initialize + 0.06 200.000 200.000 0.000 0.000 4 String#gsub + 0.06 200.000 200.000 0.000 0.000 5 #exist? + 0.05 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.05 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.05 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.05 160.000 160.000 0.000 0.000 2 #basename + 0.03 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.03 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.03 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.03 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.03 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.03 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.03 120.000 120.000 0.000 0.000 3 String#strip + 0.03 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.03 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.03 329184.000 120.000 0.000 329064.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.02 80.000 80.000 0.000 0.000 1 IO#write + 0.02 80.000 80.000 0.000 0.000 1 #new + 0.02 80.000 80.000 0.000 0.000 1 String#capitalize + 0.02 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.02 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.02 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.02 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.02 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.02 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.02 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.02 329024.000 80.000 0.000 328944.000 44 *Array#each + 0.02 1000.000 80.000 0.000 920.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.02 1080.000 80.000 0.000 1000.000 1 Enumerable#map + 0.02 1280.000 80.000 0.000 1200.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.01 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 40.000 40.000 0.000 0.000 1 Array#* + 0.01 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.01 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.01 40.000 40.000 0.000 0.000 1 String#downcase + 0.01 40.000 40.000 0.000 0.000 2 Module#append_features + 0.01 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.01 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.01 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.01 40.000 40.000 0.000 0.000 6 Array#index + 0.01 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 40.000 40.000 0.000 0.000 1 #utc + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.01 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.01 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.01 329144.000 40.000 0.000 329104.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.01 329224.000 40.000 0.000 329184.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 329264.000 40.000 0.000 329224.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 329304.000 40.000 0.000 329264.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 329344.000 40.000 0.000 329304.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.01 40.000 40.000 0.000 0.000 1 File#initialize + 0.01 80.000 40.000 0.000 40.000 1 #new + 0.01 354632.000 40.000 0.000 354592.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 2480.000 0.000 0.000 2480.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 3928.000 0.000 0.000 3928.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22072.000 0.000 0.000 22072.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45872.000 0.000 0.000 45872.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48952.000 0.000 0.000 48952.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 920.000 0.000 0.000 920.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 3800.000 0.000 0.000 3800.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 78 String#to_i + 0.00 0.000 0.000 0.000 0.000 4 Kernel#!~ + 0.00 2000.000 0.000 0.000 2000.000 50 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 55 String#eql? diff --git a/benchmarks/RAM/reports/flat-50.txt b/benchmarks/RAM/reports/flat-50.txt new file mode 100644 index 00000000..d61550b0 --- /dev/null +++ b/benchmarks/RAM/reports/flat-50.txt @@ -0,0 +1,307 @@ +Measure Mode: memory +Thread ID: 47179927918940 +Fiber ID: 47179930034960 +Total: 370176.000000 +Sort by: self_time + + %self total self wait child calls name location + 66.89 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 3.81 14120.000 14120.000 0.000 0.000 55 String#split + 3.57 325056.000 13224.000 0.000 311832.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 3.15 21328.000 11672.000 0.000 9656.000 1 Kernel#eval + 1.77 6560.000 6560.000 0.000 0.000 229 #file? + 1.77 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 1.74 13224.000 6424.000 0.000 6800.000 50 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 1.72 33304.000 6360.000 0.000 26944.000 1 #foreach + 1.53 5680.000 5680.000 0.000 0.000 71 #join + 1.38 5120.000 5120.000 0.000 0.000 128 String#upcase + 0.91 3360.000 3360.000 0.000 0.000 1 #dump + 0.81 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.69 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.56 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.50 1840.000 1840.000 0.000 0.000 6 String#scan + 0.46 1720.000 1720.000 0.000 0.000 43 String#chomp + 0.45 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.43 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.42 1560.000 1560.000 0.000 0.000 45 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.39 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.39 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.39 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.38 1400.000 1400.000 0.000 0.000 19 Array#sort + 0.33 2040.000 1240.000 0.000 800.000 15 Array#map + 0.33 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.25 1480.000 920.000 0.000 560.000 23 Array#join + 0.23 856.000 856.000 0.000 0.000 4 Array#uniq + 0.23 370136.000 856.000 0.000 369280.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.23 3560.000 840.000 0.000 2720.000 1 Hash#each_value + 0.21 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.21 760.000 760.000 0.000 0.000 19 Array#reverse + 0.16 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.15 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.15 560.000 560.000 0.000 0.000 14 Integer#to_s + 0.13 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.13 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.13 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.12 440.000 440.000 0.000 0.000 8 #dirname + 0.11 400.000 400.000 0.000 0.000 2 Module#define_method + 0.11 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.10 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.09 320.000 320.000 0.000 0.000 8 Array#compact + 0.09 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.09 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.09 320.000 320.000 0.000 0.000 9 String#=~ + 0.08 312.000 312.000 0.000 0.000 1 #read + 0.08 280.000 280.000 0.000 0.000 7 Array#select + 0.06 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.06 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.06 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.06 240.000 240.000 0.000 0.000 6 Array#slice! + 0.06 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.06 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.06 240.000 240.000 0.000 0.000 2 #pwd + 0.06 232.000 232.000 0.000 0.000 1 Hash#merge + 0.06 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.06 232.000 232.000 0.000 0.000 1 Hash#key? + 0.06 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.06 22032.000 232.000 0.000 21800.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.05 200.000 200.000 0.000 0.000 5 Class#initialize + 0.05 200.000 200.000 0.000 0.000 4 String#gsub + 0.05 200.000 200.000 0.000 0.000 5 #exist? + 0.04 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.04 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.04 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.04 160.000 160.000 0.000 0.000 2 #basename + 0.03 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.03 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.03 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.03 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.03 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.03 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.03 120.000 120.000 0.000 0.000 3 String#strip + 0.03 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.03 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.03 330024.000 120.000 0.000 329904.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.02 80.000 80.000 0.000 0.000 1 IO#write + 0.02 80.000 80.000 0.000 0.000 1 #new + 0.02 80.000 80.000 0.000 0.000 1 String#capitalize + 0.02 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.02 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.02 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.02 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.02 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.02 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.02 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.02 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.02 329864.000 80.000 0.000 329784.000 44 *Array#each + 0.02 1600.000 80.000 0.000 1520.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.02 1680.000 80.000 0.000 1600.000 1 Enumerable#map + 0.02 1880.000 80.000 0.000 1800.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.01 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.01 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.01 40.000 40.000 0.000 0.000 1 Array#* + 0.01 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.01 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.01 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.01 40.000 40.000 0.000 0.000 1 String#downcase + 0.01 40.000 40.000 0.000 0.000 2 Module#append_features + 0.01 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.01 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.01 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.01 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.01 40.000 40.000 0.000 0.000 6 Array#index + 0.01 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.01 40.000 40.000 0.000 0.000 1 #utc + 0.01 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.01 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.01 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.01 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.01 329984.000 40.000 0.000 329944.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.01 330064.000 40.000 0.000 330024.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.01 330104.000 40.000 0.000 330064.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.01 330144.000 40.000 0.000 330104.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.01 330184.000 40.000 0.000 330144.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.01 40.000 40.000 0.000 0.000 1 File#initialize + 0.01 80.000 40.000 0.000 40.000 1 #new + 0.01 370176.000 40.000 0.000 370136.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 3360.000 0.000 0.000 3360.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 4808.000 0.000 0.000 4808.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22032.000 0.000 0.000 22032.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45832.000 0.000 0.000 45832.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48912.000 0.000 0.000 48912.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 1520.000 0.000 0.000 1520.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 5440.000 0.000 0.000 5440.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 121 String#to_i + 0.00 80.000 0.000 0.000 80.000 7 Kernel#!~ + 0.00 3440.000 0.000 0.000 3440.000 86 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 93 String#eql? diff --git a/benchmarks/RAM/reports/flat-500.txt b/benchmarks/RAM/reports/flat-500.txt new file mode 100644 index 00000000..e69de29b diff --git a/benchmarks/RAM/reports/flat-large.txt b/benchmarks/RAM/reports/flat-large.txt new file mode 100644 index 00000000..0f8bd097 --- /dev/null +++ b/benchmarks/RAM/reports/flat-large.txt @@ -0,0 +1,330 @@ +Measure Mode: memory +Thread ID: 47438279055740 +Fiber ID: 47438280210880 +Total: 2564204832.000000 +Sort by: self_time + + %self total self wait child calls name location + 34.72 890263600.000 890263600.000 0.000 0.000 3250945 String#split + 17.62 794686200.000 451718320.000 0.000 342967880.000 3250940 Object#make_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:32 + 15.99 2095062320.000 410112920.000 0.000 1684949400.000 1 #foreach + 8.58 220083360.000 220083360.000 0.000 0.000 5502084 String#upcase + 8.45 216684840.000 216684840.000 0.000 0.000 1 #dump + 4.29 110037600.000 110037600.000 0.000 0.000 2750940 String#chomp + 2.92 74834200.000 74834200.000 0.000 0.000 984935 Array#sort + 2.30 98493080.000 59095880.000 0.000 39397200.000 1477397 Array#join + 2.30 252121240.000 59095800.000 0.000 193025440.000 1 Hash#each_value + 1.54 39397200.000 39397200.000 0.000 0.000 984930 Integer#to_s + 0.77 19699080.000 19699080.000 0.000 0.000 492477 Array#reverse + 0.50 12847280.000 12847280.000 0.000 0.000 643790 String#=~ + 0.01 276144.000 247608.000 0.000 28536.000 22 *Kernel#gem_original_require + 0.00 325056.000 13224.000 0.000 311832.000 21 *Kernel#require /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34 + 0.00 21328.000 11672.000 0.000 9656.000 1 Kernel#eval + 0.00 8040.000 8040.000 0.000 0.000 2750942 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 0.00 6560.000 6560.000 0.000 0.000 229 #file? + 0.00 16680.000 6560.000 0.000 10120.000 112 *Array#any? + 0.00 5680.000 5680.000 0.000 0.000 71 #join + 0.00 14440.000 2984.000 0.000 11456.000 40 *Class#new + 0.00 3840.000 2560.000 0.000 1280.000 16 #chdir + 0.00 2080.000 2080.000 0.000 0.000 26 Array#flatten + 0.00 1840.000 1840.000 0.000 0.000 6 String#scan + 0.00 3600.000 1680.000 0.000 1920.000 14 #parse /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:97 + 0.00 24000.000 1600.000 0.000 22400.000 20 *Enumerable#find + 0.00 1440.000 1440.000 0.000 0.000 12 Enumerable#drop_while + 0.00 1440.000 1440.000 0.000 0.000 15 Regexp#=~ + 0.00 9616.000 1432.000 0.000 8184.000 1 Gem::Specification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2046 + 0.00 2040.000 1240.000 0.000 800.000 15 Array#map + 0.00 1240.000 1240.000 0.000 0.000 21 #expand_path + 0.00 856.000 856.000 0.000 0.000 4 Array#uniq + 0.00 2564204792.000 856.000 0.000 2564203936.000 1 Object#work /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:4 + 0.00 912.000 792.000 0.000 120.000 1 Gem::Specification#set_not_nil_attributes_to_default_values /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2035 + 0.00 600.000 600.000 0.000 0.000 3 Enumerable#partition + 0.00 560.000 560.000 0.000 0.000 13 Kernel#dup + 0.00 480.000 480.000 0.000 0.000 6 Enumerable#reduce + 0.00 480.000 480.000 0.000 0.000 24 Array#reverse_each + 0.00 464.000 464.000 0.000 0.000 1 MultiJson::OptionsCache#reset /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:5 + 0.00 440.000 440.000 0.000 0.000 8 #dirname + 0.00 400.000 400.000 0.000 0.000 2 Module#define_method + 0.00 896.000 392.000 0.000 504.000 1 MultiJson::OptionsCache#write /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:24 + 0.00 920.000 360.000 0.000 560.000 4 BasicObject#instance_eval + 0.00 320.000 320.000 0.000 0.000 8 Array#compact + 0.00 1960.000 320.000 0.000 1640.000 7 #env_requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:915 + 0.00 5752.000 320.000 0.000 5432.000 8 Gem::Dependency#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:39 + 0.00 312.000 312.000 0.000 0.000 1 #read + 0.00 280.000 280.000 0.000 0.000 7 Array#select + 0.00 3640.000 240.000 0.000 3400.000 3 Enumerable#find_all + 0.00 2016.000 240.000 0.000 1776.000 4 Gem::Specification#add_bindir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1507 + 0.00 51704.000 240.000 0.000 51464.000 4 #remove_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1284 + 0.00 240.000 240.000 0.000 0.000 6 Array#slice! + 0.00 3600.000 240.000 0.000 3360.000 6 Gem::Version#_split_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:392 + 0.00 240.000 240.000 0.000 0.000 6 #default_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:30 + 0.00 240.000 240.000 0.000 0.000 2 #pwd + 0.00 232.000 232.000 0.000 0.000 1 Hash#merge + 0.00 232.000 232.000 0.000 0.000 1 MultiJson::Options#default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:25 + 0.00 232.000 232.000 0.000 0.000 1 Hash#key? + 0.00 232.000 232.000 0.000 0.000 17 Array#uniq! + 0.00 22032.000 232.000 0.000 21800.000 4 #load /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1149 + 0.00 200.000 200.000 0.000 0.000 5 Class#initialize + 0.00 200.000 200.000 0.000 0.000 4 String#gsub + 0.00 200.000 200.000 0.000 0.000 5 #exist? + 0.00 160.000 160.000 0.000 0.000 4 Symbol#to_s + 0.00 6912.000 160.000 0.000 6752.000 14 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:50 + 0.00 7432.000 160.000 0.000 7272.000 17 Gem::Requirement#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:123 + 0.00 160.000 160.000 0.000 0.000 2 #basename + 0.00 1368.000 120.000 0.000 1248.000 1 MultiJson::OptionsCache#fetch /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb:10 + 0.00 160.000 120.000 0.000 40.000 1 Set#do_with_enum /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:122 + 0.00 120.000 120.000 0.000 0.000 2 Module#extend_object + 0.00 33920.000 120.000 0.000 33800.000 1 MultiJson#load_adapter_from_string_name /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:155 + 0.00 120.000 120.000 0.000 0.000 1 Module#attr_reader + 0.00 7440.000 120.000 0.000 7320.000 3 Gem::Dependency#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:322 + 0.00 120.000 120.000 0.000 0.000 3 String#strip + 0.00 280.000 120.000 0.000 160.000 1 Gem::Specification#date= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1742 + 0.00 120.000 120.000 0.000 0.000 1 Enumerable#grep + 0.00 217011504.000 120.000 0.000 217011384.000 2 *MultiJson#load_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:98 + 0.00 80.000 80.000 0.000 0.000 1 IO#write + 0.00 80.000 80.000 0.000 0.000 1 #new + 0.00 80.000 80.000 0.000 0.000 1 String#capitalize + 0.00 800.000 80.000 0.000 720.000 2 #defaults /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:10 + 0.00 280.000 80.000 0.000 200.000 2 #__init__ /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:132 + 0.00 80.000 80.000 0.000 0.000 1 Module#private_class_method + 0.00 120.000 80.000 0.000 40.000 1 Enumerable#each_with_index + 0.00 480.000 80.000 0.000 400.000 2 Gem::Version#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:210 + 0.00 80.000 80.000 0.000 0.000 7 Gem::Version#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:292 + 0.00 80.000 80.000 0.000 0.000 1 Kernel#binding + 0.00 4800.000 80.000 0.000 4720.000 2 Kernel#loop + 0.00 217011344.000 80.000 0.000 217011264.000 44 *Array#each + 0.00 8080.000 80.000 0.000 8000.000 1 Set#each /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:336 + 0.00 8160.000 80.000 0.000 8080.000 1 Enumerable#map + 0.00 8360.000 80.000 0.000 8280.000 1 Object#browser_decoration /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:24 + 0.00 272.000 40.000 0.000 232.000 2 MultiJson::Options#dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/options.rb:17 + 0.00 1408.000 40.000 0.000 1368.000 1 #cached_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:36 + 0.00 40.000 40.000 0.000 0.000 1 Array#* + 0.00 40.000 40.000 0.000 0.000 1 Enumerable#each_entry + 0.00 80.000 40.000 0.000 40.000 1 #append_features /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:153 + 0.00 40.000 40.000 0.000 0.000 1 Module#undef_method + 0.00 40.000 40.000 0.000 0.000 1 String#downcase + 0.00 40.000 40.000 0.000 0.000 2 Module#append_features + 0.00 9720.000 40.000 0.000 9680.000 4 Kernel#gem /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:44 + 0.00 40.000 40.000 0.000 0.000 1 Gem::Platform#to_a /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:118 + 0.00 40.000 40.000 0.000 0.000 1 #local /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:19 + 0.00 120.000 40.000 0.000 80.000 1 Gem::BasicSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:126 + 0.00 320.000 40.000 0.000 280.000 6 Gem::Version#segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:317 + 0.00 40.000 40.000 0.000 0.000 6 Array#index + 0.00 2760.000 40.000 0.000 2720.000 36 Gem::Version#_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:382 + 0.00 40.000 40.000 0.000 0.000 1 Gem::Specification#required_ruby_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:664 + 0.00 40.000 40.000 0.000 0.000 1 #utc + 0.00 40.000 40.000 0.000 0.000 1 Gem::Specification#required_rubygems_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:671 + 0.00 2040.000 40.000 0.000 2000.000 13 Array#sort! + 0.00 6040.000 40.000 0.000 6000.000 19 Array#map! + 0.00 600.000 40.000 0.000 560.000 10 #new /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:200 + 0.00 217011464.000 40.000 0.000 217011424.000 1 MultiJson#default_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:46 + 0.00 217011544.000 40.000 0.000 217011504.000 1 MultiJson#use /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:90 + 0.00 217011584.000 40.000 0.000 217011544.000 1 MultiJson#adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:70 + 0.00 217011624.000 40.000 0.000 217011584.000 1 MultiJson#current_adapter /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:129 + 0.00 217011664.000 40.000 0.000 217011624.000 1 MultiJson#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json.rb:138 + 0.00 40.000 40.000 0.000 0.000 1 File#initialize + 0.00 80.000 40.000 0.000 40.000 1 #new + 0.00 2564204832.000 40.000 0.000 2564204792.000 1 [global]# ./ruby-prof.rb:7 + 0.00 0.000 0.000 0.000 0.000 1 IO#close + 0.00 0.000 0.000 0.000 0.000 29 Hash#has_key? + 0.00 216684840.000 0.000 0.000 216684840.000 1 MultiJson::Adapters::Oj#dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 Hash#merge! + 0.00 0.000 0.000 0.000 0.000 1 #default_dump_options /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:14 + 0.00 0.000 0.000 0.000 0.000 2 Hash#hash + 0.00 0.000 0.000 0.000 0.000 1 Kernel#instance_variable_get + 0.00 0.000 0.000 0.000 0.000 2 BasicObject#initialize + 0.00 40.000 0.000 0.000 40.000 1 #instance /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:137 + 0.00 216686288.000 0.000 0.000 216686288.000 1 #dump /home/pavel/.rvm/gems/ruby-2.6.3/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:24 + 0.00 0.000 0.000 0.000 0.000 1 Module#const_get + 0.00 0.000 0.000 0.000 0.000 1 Set#freeze /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:145 + 0.00 160.000 0.000 0.000 160.000 1 Set#merge /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:432 + 0.00 432.000 0.000 0.000 432.000 1 Enumerable#to_set /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:814 + 0.00 160.000 0.000 0.000 160.000 1 Singleton::SingletonClassMethods#inherited /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:125 + 0.00 0.000 0.000 0.000 0.000 2 Thread::Mutex#initialize + 0.00 240.000 0.000 0.000 240.000 1 #included /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/singleton.rb:161 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#instance_of? + 0.00 0.000 0.000 0.000 0.000 2 Module#extended + 0.00 120.000 0.000 0.000 120.000 2 Kernel#extend + 0.00 0.000 0.000 0.000 0.000 1 BasicObject#singleton_method_undefined + 0.00 0.000 0.000 0.000 0.000 1 Hash#fetch + 0.00 0.000 0.000 0.000 0.000 2 Module#included + 0.00 320.000 0.000 0.000 320.000 2 Module#include + 0.00 0.000 0.000 0.000 0.000 4 Module#protected + 0.00 0.000 0.000 0.000 0.000 12 Module#private + 0.00 0.000 0.000 0.000 0.000 1 Gem::Requirement#none? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:167 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Dependency#matches_spec? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:252 + 0.00 0.000 0.000 0.000 0.000 127 BasicObject#singleton_method_added + 0.00 0.000 0.000 0.000 0.000 300 Module#method_added + 0.00 0.000 0.000 0.000 0.000 23 Class#inherited + 0.00 680.000 0.000 0.000 680.000 4 Thread::Mutex#synchronize + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#_tilde_requirements /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:280 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Requirement#== /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:264 + 0.00 960.000 0.000 0.000 960.000 3 #default /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:74 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Requirement#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:228 + 0.00 40.000 0.000 0.000 40.000 3 Gem::Dependency#prerelease? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:91 + 0.00 0.000 0.000 0.000 0.000 3 #platforms /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:751 + 0.00 0.000 0.000 0.000 0.000 3 #match /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:25 + 0.00 0.000 0.000 0.000 0.000 3 Array#reject! + 0.00 0.000 0.000 0.000 0.000 6 Gem::StubSpecification#version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:176 + 0.00 0.000 0.000 0.000 0.000 10 Gem::Dependency#requirement /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:121 + 0.00 0.000 0.000 0.000 0.000 3 #stubs_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:837 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#matching_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:278 + 0.00 5240.000 0.000 0.000 5240.000 3 Gem::Dependency#to_specs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:302 + 0.00 0.000 0.000 0.000 0.000 4 Kernel#kind_of? + 0.00 2016.000 0.000 0.000 2016.000 4 Gem::Specification#files /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:255 + 0.00 0.000 0.000 0.000 0.000 30 IO#set_encoding + 0.00 0.000 0.000 0.000 0.000 1 Array#insert + 0.00 120.000 0.000 0.000 120.000 1 #load_path_insert_index /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:660 + 0.00 0.000 0.000 0.000 0.000 1 #ruby_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:911 + 0.00 0.000 0.000 0.000 0.000 1 #extension_api_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:485 + 0.00 120.000 0.000 0.000 120.000 1 Gem::Platform#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/platform.rb:122 + 0.00 0.000 0.000 0.000 0.000 1 #default_ext_dir_for /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/defaults.rb:62 + 0.00 240.000 0.000 0.000 240.000 1 Gem::BasicSpecification#extensions_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:97 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Version#to_s /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:163 + 0.00 0.000 0.000 0.000 0.000 4 Gem::Specification#platform /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2239 + 0.00 280.000 0.000 0.000 280.000 3 Gem::Specification#base_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2092 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#find_full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:103 + 0.00 640.000 0.000 0.000 640.000 1 Gem::BasicSpecification#full_gem_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:115 + 0.00 1160.000 0.000 0.000 1160.000 1 Gem::BasicSpecification#full_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:138 + 0.00 2000.000 0.000 0.000 2000.000 4 Gem::Specification#add_self_to_load_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1546 + 0.00 0.000 0.000 0.000 0.000 27 Hash#delete + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#runtime_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2375 + 0.00 160.000 0.000 0.000 160.000 4 Gem::Specification#activate_dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1432 + 0.00 0.000 0.000 0.000 0.000 24 Gem::Dependency#runtime? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/dependency.rb:169 + 0.00 4480.000 0.000 0.000 4480.000 10 Array#all? + 0.00 4480.000 0.000 0.000 4480.000 10 Gem::Requirement#satisfied_by? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:241 + 0.00 0.000 0.000 0.000 0.000 4 String#to_str + 0.00 0.000 0.000 0.000 0.000 5 String#=== + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#has_conflicts? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1702 + 0.00 1560.000 0.000 0.000 1560.000 4 Gem::Specification#raise_if_conflicts /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2297 + 0.00 3720.000 0.000 0.000 3720.000 4 Gem::Specification#activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1408 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Specification#dependencies /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1798 + 0.00 0.000 0.000 0.000 0.000 6 Array#concat + 0.00 0.000 0.000 0.000 0.000 12 Enumerator#each + 0.00 0.000 0.000 0.000 0.000 8 Kernel#freeze + 0.00 0.000 0.000 0.000 0.000 12 Array#include? + 0.00 0.000 0.000 0.000 0.000 4 Array#pop + 0.00 0.000 0.000 0.000 0.000 13 Array#last + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_dependency_with_type /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1524 + 0.00 5432.000 0.000 0.000 5432.000 4 Gem::Specification#add_development_dependency /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:546 + 0.00 0.000 0.000 0.000 0.000 12 Integer#<=> + 0.00 0.000 0.000 0.000 0.000 16 Array#== + 0.00 6480.000 0.000 0.000 6480.000 24 Gem::Version#canonical_segments /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:369 + 0.00 0.000 0.000 0.000 0.000 12 Gem::Version#_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:378 + 0.00 6480.000 0.000 0.000 6480.000 12 Gem::Version#<=> /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:342 + 0.00 4480.000 0.000 0.000 4480.000 11 Comparable#>= + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#installed_by_version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:626 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#summary= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2438 + 0.00 0.000 0.000 0.000 0.000 18 Kernel#is_a? + 0.00 0.000 0.000 0.000 0.000 2 #skip /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/deprecate.rb:26 + 0.00 240.000 0.000 0.000 240.000 2 #correct? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:172 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#rdoc_options= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2307 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#licenses= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:361 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1941 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extra_rdoc_files= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1924 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#extensions= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1915 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#description= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1834 + 0.00 200.000 0.000 0.000 200.000 1 Gem::Specification#authors= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:276 + 0.00 0.000 0.000 0.000 0.000 11 Kernel#Array + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#require_paths= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:509 + 0.00 0.000 0.000 0.000 0.000 14 Array#shift + 0.00 2040.000 0.000 0.000 2040.000 13 Gem::Requirement#sort_requirements! /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/requirement.rb:297 + 0.00 0.000 0.000 0.000 0.000 26 String#to_s + 0.00 0.000 0.000 0.000 0.000 17 Array#compact! + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#invalidate_memoized_attributes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2105 + 0.00 0.000 0.000 0.000 0.000 13 Kernel#instance_variable_defined? + 0.00 0.000 0.000 0.000 0.000 14 Kernel#nil? + 0.00 0.000 0.000 0.000 0.000 1 #create /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/version.rb:188 + 0.00 40.000 0.000 0.000 40.000 1 Gem::Specification#version= /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2689 + 0.00 0.000 0.000 0.000 0.000 2 Kernel#initialize_copy + 0.00 0.000 0.000 0.000 0.000 7 Array#initialize_copy + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#default_value /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1788 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#set_nil_attributes_to_nil /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2030 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:197 + 0.00 0.000 0.000 0.000 0.000 1 Gem::Specification#internal_init /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2147 + 0.00 0.000 0.000 0.000 0.000 1 Gem::BasicSpecification#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:33 + 0.00 22032.000 0.000 0.000 22032.000 4 Gem::StubSpecification#to_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:187 + 0.00 120.000 0.000 0.000 120.000 3 Gem::Specification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1968 + 0.00 360.000 0.000 0.000 360.000 2 Gem::Specification#gems_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1979 + 0.00 0.000 0.000 0.000 0.000 2 Gem::Specification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2742 + 0.00 0.000 0.000 0.000 0.000 3 Gem::Specification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:593 + 0.00 720.000 0.000 0.000 720.000 6 #default_specifications_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:37 + 0.00 0.000 0.000 0.000 0.000 23 Kernel#class + 0.00 1040.000 0.000 0.000 1040.000 6 Gem::BasicSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:82 + 0.00 160.000 0.000 0.000 160.000 1 Gem::Specification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:2181 + 0.00 400.000 0.000 0.000 400.000 5 Gem::BasicSpecification#gem_build_complete_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:45 + 0.00 0.000 0.000 0.000 0.000 3 Kernel#block_given? + 0.00 4960.000 0.000 0.000 4960.000 2 #traverse_parents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/util.rb:106 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_contents /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:77 + 0.00 5200.000 0.000 0.000 5200.000 2 #lockfile_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:67 + 0.00 160.000 0.000 0.000 160.000 2 #bundle_update_bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:50 + 0.00 0.000 0.000 0.000 0.000 12 #[] + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version_with_reason /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:14 + 0.00 5360.000 0.000 0.000 5360.000 2 #bundler_version /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:6 + 0.00 400.000 0.000 0.000 400.000 17 Gem::BasicSpecification#extension_dir /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:90 + 0.00 0.000 0.000 0.000 0.000 44 Gem::BasicSpecification#have_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:317 + 0.00 0.000 0.000 0.000 0.000 158 Kernel#untaint + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#full_name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:180 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#raw_require_paths /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:140 + 0.00 17520.000 0.000 0.000 17520.000 44 Gem::BasicSpecification#have_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:319 + 0.00 0.000 0.000 0.000 0.000 44 #suffixes /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1016 + 0.00 0.000 0.000 0.000 0.000 66 Gem::StubSpecification#extensions /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:169 + 0.00 0.000 0.000 0.000 0.000 43 Gem::StubSpecification#default_gem? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:93 + 0.00 600.000 0.000 0.000 600.000 43 Gem::StubSpecification#missing_extensions? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:144 + 0.00 18280.000 0.000 0.000 18280.000 44 Gem::BasicSpecification#contains_requirable_file? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/basic_specification.rb:68 + 0.00 0.000 0.000 0.000 0.000 205 Gem::StubSpecification#data /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:108 + 0.00 0.000 0.000 0.000 0.000 47 Gem::StubSpecification#name /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/stub_specification.rb:155 + 0.00 5360.000 0.000 0.000 5360.000 44 #compatible? /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/bundler_version_finder.rb:37 + 0.00 0.000 0.000 0.000 0.000 1 #stubs /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:819 + 0.00 0.000 0.000 0.000 0.000 1 String#freeze + 0.00 0.000 0.000 0.000 0.000 4 String#initialize_copy + 0.00 0.000 0.000 0.000 0.000 13 Kernel#initialize_dup + 0.00 45832.000 0.000 0.000 45832.000 1 #find_by_path /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1034 + 0.00 48912.000 0.000 0.000 48912.000 1 #try_activate /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:206 + 0.00 0.000 0.000 0.000 0.000 1 String#end_with? + 0.00 0.000 0.000 0.000 0.000 1 String#start_with? + 0.00 0.000 0.000 0.000 0.000 2 Exception#to_s + 0.00 0.000 0.000 0.000 0.000 2 Exception#message + 0.00 0.000 0.000 0.000 0.000 1 Exception#backtrace + 0.00 0.000 0.000 0.000 0.000 1 Exception#exception + 0.00 0.000 0.000 0.000 0.000 1 Exception#initialize + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#unlock + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#mon_check_owner /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:267 + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#exit /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:199 + 0.00 0.000 0.000 0.000 0.000 25 #unresolved_deps /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems/specification.rb:1301 + 0.00 0.000 0.000 0.000 0.000 21 #find_unresolved_default_spec /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0/rubygems.rb:1276 + 0.00 0.000 0.000 0.000 0.000 34 Kernel#respond_to? + 0.00 0.000 0.000 0.000 0.000 22 Thread::Mutex#lock + 0.00 0.000 0.000 0.000 0.000 66 #current + 0.00 0.000 0.000 0.000 0.000 22 MonitorMixin#enter /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:187 + 0.00 0.000 0.000 0.000 0.000 139 Module#=== + 0.00 8000.000 0.000 0.000 8000.000 1 Hash#each_key + 0.00 0.000 0.000 0.000 0.000 1 Set#length /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:161 + 0.00 252129600.000 0.000 0.000 252129600.000 1 Object#prepare_report /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:56 + 0.00 0.000 0.000 0.000 0.000 6598228 String#to_i + 0.00 12847040.000 0.000 0.000 12847040.000 643788 Kernel#!~ + 0.00 220075200.000 0.000 0.000 220075200.000 5501880 Object#browser /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:28 + 0.00 0.000 0.000 0.000 0.000 6001880 String#eql? + 0.00 0.000 0.000 0.000 0.000 6001890 Array#first + 0.00 0.000 0.000 0.000 0.000 1 NilClass#nil? + 0.00 0.000 0.000 0.000 0.000 2 Hash#initialize + 0.00 624.000 0.000 0.000 624.000 2 Set#initialize /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:93 + 0.00 0.000 0.000 0.000 0.000 1 #disable + +* recursively called methods + +Columns are: + + %self - The percentage of time spent in this method, derived from self_time/total_time. + total - The time spent in this method and its children. + self - The time spent in this method. + wait - The amount of time this method waited for other threads. + child - The time spent in this method's children. + calls - The number of times this method was called. + name - The name of the method. + location - The location of the method. + +The interpretation of method names is: + + * MyObject#test - An instance method "test" of the class "MyObject" + * #test - The <> characters indicate a method on a singleton class. diff --git a/benchmarks/RAM/reports/img/point-1.png b/benchmarks/RAM/reports/img/point-1.png new file mode 100644 index 00000000..50450701 Binary files /dev/null and b/benchmarks/RAM/reports/img/point-1.png differ diff --git a/benchmarks/RAM/reports/img/point-2.png b/benchmarks/RAM/reports/img/point-2.png new file mode 100644 index 00000000..3f156317 Binary files /dev/null and b/benchmarks/RAM/reports/img/point-2.png differ diff --git a/benchmarks/RAM/reports/img/point-3.png b/benchmarks/RAM/reports/img/point-3.png new file mode 100644 index 00000000..d0c8729e Binary files /dev/null and b/benchmarks/RAM/reports/img/point-3.png differ diff --git a/benchmarks/RAM/reports/img/point-4.png b/benchmarks/RAM/reports/img/point-4.png new file mode 100644 index 00000000..4498cf30 Binary files /dev/null and b/benchmarks/RAM/reports/img/point-4.png differ diff --git a/benchmarks/RAM/reports/img/point-5.png b/benchmarks/RAM/reports/img/point-5.png new file mode 100644 index 00000000..53d69013 Binary files /dev/null and b/benchmarks/RAM/reports/img/point-5.png differ diff --git a/benchmarks/RAM/reports/img/point-6.png b/benchmarks/RAM/reports/img/point-6.png new file mode 100644 index 00000000..2d2aaf08 Binary files /dev/null and b/benchmarks/RAM/reports/img/point-6.png differ diff --git a/benchmarks/RAM/reports/img/point-7.png b/benchmarks/RAM/reports/img/point-7.png new file mode 100644 index 00000000..c73c7e8b Binary files /dev/null and b/benchmarks/RAM/reports/img/point-7.png differ diff --git a/benchmarks/RAM/reports/massif.out.11641 b/benchmarks/RAM/reports/massif.out.11641 new file mode 100644 index 00000000..717bfb38 --- /dev/null +++ b/benchmarks/RAM/reports/massif.out.11641 @@ -0,0 +1,730 @@ +desc: (none) +cmd: ruby ./task-2.rb +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=3769321 +mem_heap_B=35324446 +mem_heap_extra_B=59594 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=2 +#----------- +time=8908724 +mem_heap_B=35605250 +mem_heap_extra_B=105774 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=3 +#----------- +time=12102084 +mem_heap_B=35704542 +mem_heap_extra_B=130666 +mem_stacks_B=0 +heap_tree=detailed +n4: 35704542 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n2: 1378510 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 329934 in 46 places, all below massif's threshold (1.00%) + n1: 392256 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 379344 in 23 places, all below massif's threshold (1.00%) +#----------- +snapshot=4 +#----------- +time=17277976 +mem_heap_B=36000380 +mem_heap_extra_B=159644 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=5 +#----------- +time=22531924 +mem_heap_B=36196556 +mem_heap_extra_B=165484 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=6 +#----------- +time=28586411 +mem_heap_B=36142101 +mem_heap_extra_B=211555 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=7 +#----------- +time=32453999 +mem_heap_B=36416057 +mem_heap_extra_B=220519 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=8 +#----------- +time=38362719 +mem_heap_B=36315899 +mem_heap_extra_B=245685 +mem_stacks_B=0 +heap_tree=detailed +n5: 36315899 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n2: 1737764 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 689188 in 87 places, all below massif's threshold (1.00%) + n2: 441288 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 49032 in 2 places, all below massif's threshold (1.00%) + n1: 388192 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 388192 in 21 places, all below massif's threshold (1.00%) + n0: 194223 in 54 places, all below massif's threshold (1.00%) +#----------- +snapshot=9 +#----------- +time=41968625 +mem_heap_B=36399229 +mem_heap_extra_B=285643 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=10 +#----------- +time=46636525 +mem_heap_B=36521384 +mem_heap_extra_B=302344 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=11 +#----------- +time=54484825 +mem_heap_B=36529420 +mem_heap_extra_B=277812 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=12 +#----------- +time=60890707 +mem_heap_B=36806644 +mem_heap_extra_B=288372 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=13 +#----------- +time=66194271 +mem_heap_B=37004889 +mem_heap_extra_B=321343 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=14 +#----------- +time=70419533 +mem_heap_B=37165522 +mem_heap_extra_B=356110 +mem_stacks_B=0 +heap_tree=detailed +n5: 37165522 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n3: 2419638 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 912238 in 89 places, all below massif's threshold (1.00%) + n1: 458824 0x4F767E6: rb_ast_newnode (node.c:1096) + n0: 458824 in 8 places, all below massif's threshold (1.00%) + n1: 538950 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 538950 in 21 places, all below massif's threshold (1.00%) + n2: 473976 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 81720 in 2 places, all below massif's threshold (1.00%) + n0: 178526 in 59 places, all below massif's threshold (1.00%) +#----------- +snapshot=15 +#----------- +time=75739276 +mem_heap_B=36738380 +mem_heap_extra_B=385556 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=16 +#----------- +time=83308510 +mem_heap_B=36981500 +mem_heap_extra_B=448628 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=17 +#----------- +time=89369640 +mem_heap_B=37215370 +mem_heap_extra_B=514118 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=18 +#----------- +time=94170431 +mem_heap_B=37243832 +mem_heap_extra_B=550752 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=19 +#----------- +time=101709519 +mem_heap_B=37368986 +mem_heap_extra_B=546462 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=20 +#----------- +time=105825034 +mem_heap_B=37435722 +mem_heap_extra_B=567886 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=21 +#----------- +time=110319941 +mem_heap_B=37436729 +mem_heap_extra_B=600399 +mem_stacks_B=0 +heap_tree=detailed +n5: 37436729 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n3: 2230510 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 753006 in 95 places, all below massif's threshold (1.00%) + n1: 428928 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 428928 in 31 places, all below massif's threshold (1.00%) + n1: 769770 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 769770 in 23 places, all below massif's threshold (1.00%) + n2: 588384 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 196128 in 3 places, all below massif's threshold (1.00%) + n0: 293633 in 77 places, all below massif's threshold (1.00%) +#----------- +snapshot=22 +#----------- +time=115507493 +mem_heap_B=37482889 +mem_heap_extra_B=601239 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=23 +#----------- +time=120211567 +mem_heap_B=37523878 +mem_heap_extra_B=602402 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=24 +#----------- +time=126537003 +mem_heap_B=37411053 +mem_heap_extra_B=573035 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=25 +#----------- +time=129961417 +mem_heap_B=37422189 +mem_heap_extra_B=573043 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=26 +#----------- +time=135443354 +mem_heap_B=37503833 +mem_heap_extra_B=580423 +mem_stacks_B=0 +heap_tree=detailed +n5: 37503833 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n3: 2294828 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 798796 in 97 places, all below massif's threshold (1.00%) + n1: 447456 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 447456 in 31 places, all below massif's threshold (1.00%) + n1: 770733 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 770733 in 23 places, all below massif's threshold (1.00%) + n2: 588384 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 196128 in 3 places, all below massif's threshold (1.00%) + n0: 295456 in 79 places, all below massif's threshold (1.00%) +#----------- +snapshot=27 +#----------- +time=141249773 +mem_heap_B=37580416 +mem_heap_extra_B=586280 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=28 +#----------- +time=146350336 +mem_heap_B=37726702 +mem_heap_extra_B=592802 +mem_stacks_B=0 +heap_tree=detailed +n5: 37726702 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n3: 2500136 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 1003336 in 97 places, all below massif's threshold (1.00%) + n1: 448224 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 448224 in 31 places, all below massif's threshold (1.00%) + n1: 780923 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 780923 in 23 places, all below massif's threshold (1.00%) + n2: 588384 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 196128 in 3 places, all below massif's threshold (1.00%) + n0: 302827 in 79 places, all below massif's threshold (1.00%) +#----------- +snapshot=29 +#----------- +time=150857141 +mem_heap_B=37615018 +mem_heap_extra_B=632710 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=30 +#----------- +time=157038239 +mem_heap_B=37771789 +mem_heap_extra_B=704667 +mem_stacks_B=0 +heap_tree=detailed +n5: 37771789 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2403322 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 494562 in 97 places, all below massif's threshold (1.00%) + n1: 468576 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 468576 in 31 places, all below massif's threshold (1.00%) + n2: 391608 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 391264 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 391264 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 386056 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 386056 in 9 places, all below massif's threshold (1.00%) + n0: 5208 in 4 places, all below massif's threshold (1.00%) + n0: 344 in 1 place, below massif's threshold (1.00%) + n1: 884229 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 884229 in 23 places, all below massif's threshold (1.00%) + n2: 604728 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 212472 in 3 places, all below massif's threshold (1.00%) + n0: 325078 in 79 places, all below massif's threshold (1.00%) +#----------- +snapshot=31 +#----------- +time=162087890 +mem_heap_B=37954094 +mem_heap_extra_B=751626 +mem_stacks_B=0 +heap_tree=detailed +n5: 37954094 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2484362 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 552898 in 98 places, all below massif's threshold (1.00%) + n1: 476064 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 476064 in 32 places, all below massif's threshold (1.00%) + n2: 406824 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 406368 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 406368 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 400688 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 400688 in 9 places, all below massif's threshold (1.00%) + n0: 5680 in 5 places, all below massif's threshold (1.00%) + n0: 456 in 1 place, below massif's threshold (1.00%) + n1: 942125 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 942125 in 23 places, all below massif's threshold (1.00%) + n2: 637416 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 245160 in 3 places, all below massif's threshold (1.00%) + n0: 335759 in 83 places, all below massif's threshold (1.00%) +#----------- +snapshot=32 +#----------- +time=167815839 +mem_heap_B=38126697 +mem_heap_extra_B=967671 +mem_stacks_B=0 +heap_tree=detailed +n5: 38126697 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2536125 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 576237 in 100 places, all below massif's threshold (1.00%) + n1: 484320 0x501D2D1: st_init_table_with_size (st.c:605) + n0: 484320 in 32 places, all below massif's threshold (1.00%) + n2: 426992 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 426536 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 426536 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 416080 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 416080 in 9 places, all below massif's threshold (1.00%) + n0: 10456 in 5 places, all below massif's threshold (1.00%) + n0: 456 in 1 place, below massif's threshold (1.00%) + n1: 982484 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 982484 in 23 places, all below massif's threshold (1.00%) + n2: 702792 0x4F11DCB: heap_assign_page (gc.c:7913) + n1: 392256 0x4F1218D: Init_heap (gc.c:1650) + n1: 392256 0x4EF915A: ruby_setup (eval.c:68) + n1: 392256 0x4EFC2D7: ruby_init (eval.c:91) + n0: 392256 0x108954: main (main.c:41) + n0: 310536 in 3 places, all below massif's threshold (1.00%) + n0: 350864 in 90 places, all below massif's threshold (1.00%) +#----------- +snapshot=33 +#----------- +time=171930493 +mem_heap_B=38205326 +mem_heap_extra_B=1018634 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=34 +#----------- +time=179180825 +mem_heap_B=38078104 +mem_heap_extra_B=1001824 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=35 +#----------- +time=183287257 +mem_heap_B=38171315 +mem_heap_extra_B=1049805 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=36 +#----------- +time=191540363 +mem_heap_B=38361161 +mem_heap_extra_B=1101871 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=37 +#----------- +time=195989484 +mem_heap_B=38113714 +mem_heap_extra_B=1033086 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=38 +#----------- +time=200093898 +mem_heap_B=38202751 +mem_heap_extra_B=1098505 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=39 +#----------- +time=208305921 +mem_heap_B=38225239 +mem_heap_extra_B=1121953 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=40 +#----------- +time=212488319 +mem_heap_B=38199860 +mem_heap_extra_B=1129228 +mem_stacks_B=0 +heap_tree=detailed +n5: 38199860 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2551022 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 544726 in 103 places, all below massif's threshold (1.00%) + n2: 525888 0x501D2D1: st_init_table_with_size (st.c:605) + n1: 437184 0x501D5F5: rebuild_table (st.c:780) + n0: 437184 in 4 places, all below massif's threshold (1.00%) + n0: 88704 in 31 places, all below massif's threshold (1.00%) + n2: 431832 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 431376 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 431376 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 426552 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 426552 in 9 places, all below massif's threshold (1.00%) + n0: 4824 in 5 places, all below massif's threshold (1.00%) + n0: 456 in 1 place, below massif's threshold (1.00%) + n1: 977390 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 977390 in 23 places, all below massif's threshold (1.00%) + n1: 751824 0x4F11DCB: heap_assign_page (gc.c:7913) + n0: 751824 in 4 places, all below massif's threshold (1.00%) + n0: 365192 in 92 places, all below massif's threshold (1.00%) +#----------- +snapshot=41 +#----------- +time=218176220 +mem_heap_B=38225411 +mem_heap_extra_B=1153685 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=42 +#----------- +time=224576110 +mem_heap_B=38266678 +mem_heap_extra_B=1196154 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=43 +#----------- +time=229909867 +mem_heap_B=38113497 +mem_heap_extra_B=1144791 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=44 +#----------- +time=234025403 +mem_heap_B=38199318 +mem_heap_extra_B=1179674 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=45 +#----------- +time=238165334 +mem_heap_B=38265753 +mem_heap_extra_B=1234463 +mem_stacks_B=0 +heap_tree=detailed +n5: 38265753 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2582527 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 583719 in 106 places, all below massif's threshold (1.00%) + n2: 533568 0x501D2D1: st_init_table_with_size (st.c:605) + n1: 439296 0x501D5F5: rebuild_table (st.c:780) + n0: 439296 in 4 places, all below massif's threshold (1.00%) + n0: 94272 in 31 places, all below massif's threshold (1.00%) + n2: 416664 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 416208 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 416208 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 412192 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 412192 in 9 places, all below massif's threshold (1.00%) + n0: 4016 in 5 places, all below massif's threshold (1.00%) + n0: 456 in 1 place, below massif's threshold (1.00%) + n1: 990998 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 990998 in 25 places, all below massif's threshold (1.00%) + n1: 768168 0x4F11DCB: heap_assign_page (gc.c:7913) + n0: 768168 in 4 places, all below massif's threshold (1.00%) + n0: 369628 in 92 places, all below massif's threshold (1.00%) +#----------- +snapshot=46 +#----------- +time=244378444 +mem_heap_B=38520068 +mem_heap_extra_B=1345628 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=47 +#----------- +time=250932813 +mem_heap_B=38838846 +mem_heap_extra_B=1400042 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=48 +#----------- +time=253969279 +mem_heap_B=38855291 +mem_heap_extra_B=1445053 +mem_stacks_B=0 +heap_tree=peak +n5: 38855291 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n1: 33554432 0x4F12E33: rb_aligned_malloc (gc.c:7913) + n1: 33554432 0x5075DA3: Init_TransientHeap (transient_heap.c:294) + n1: 33554432 0x4F27437: rb_call_inits (inits.c:20) + n1: 33554432 0x4EF91C7: ruby_setup (eval.c:74) + n1: 33554432 0x4EFC2D7: ruby_init (eval.c:91) + n0: 33554432 0x108954: main (main.c:41) + n4: 2810089 0x4F15362: objspace_xmalloc0 (gc.c:8134) + n1: 1048576 0x5092310: Init_BareVM (vm.c:2427) + n1: 1048576 0x4EF9155: ruby_setup (eval.c:67) + n1: 1048576 0x4EFC2D7: ruby_init (eval.c:91) + n0: 1048576 0x108954: main (main.c:41) + n0: 715657 in 109 places, all below massif's threshold (1.00%) + n2: 572256 0x501D2D1: st_init_table_with_size (st.c:605) + n1: 464640 0x501D5F5: rebuild_table (st.c:780) + n0: 464640 in 4 places, all below massif's threshold (1.00%) + n0: 107616 in 32 places, all below massif's threshold (1.00%) + n2: 473600 0x4EB1F2B: iseq_setup (compile.c:2119) + n1: 473144 0x4EB3920: rb_iseq_compile_node (compile.c:738) + n2: 473144 0x4F48630: rb_iseq_new_with_opt (iseq.c:728) + n1: 466288 0x4E9BCAB: new_child_iseq (compile.c:1224) + n0: 466288 in 9 places, all below massif's threshold (1.00%) + n0: 6856 in 6 places, all below massif's threshold (1.00%) + n0: 456 in 1 place, below massif's threshold (1.00%) + n1: 1114537 0x4F18ABA: ruby_xcalloc (gc.c:8350) + n0: 1114537 in 26 places, all below massif's threshold (1.00%) + n2: 964296 0x4F11DCB: heap_assign_page (gc.c:7913) + n0: 506664 in 3 places, all below massif's threshold (1.00%) + n1: 457632 0x4F16FC2: newobj_slowpath_wb_protected (gc.c:1718) + n0: 457632 in 10 places, all below massif's threshold (1.00%) + n0: 411937 in 97 places, all below massif's threshold (1.00%) +#----------- +snapshot=49 +#----------- +time=260132999 +mem_heap_B=38991215 +mem_heap_extra_B=1522857 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=50 +#----------- +time=263169657 +mem_heap_B=38864950 +mem_heap_extra_B=1493362 +mem_stacks_B=0 +heap_tree=empty diff --git a/benchmarks/RAM/reports/memory_profiler.txt b/benchmarks/RAM/reports/memory_profiler.txt new file mode 100644 index 00000000..08a7eff8 --- /dev/null +++ b/benchmarks/RAM/reports/memory_profiler.txt @@ -0,0 +1,382 @@ +Total allocated: 611.02 kB (7983 objects) +Total retained: 4.72 kB (4 objects) + +allocated memory by gem +----------------------------------- + 596.75 kB other + 14.26 kB set + +allocated memory by file +----------------------------------- + 596.71 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb + 14.26 kB /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb + 40.00 B ./memory_profiler.rb + +allocated memory by location +----------------------------------- + 185.68 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 53.00 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:77 + 46.98 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:54 + 37.26 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:143 + 34.34 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:42 + 33.76 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:122 + 30.80 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + 28.92 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:44 + 19.96 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:59 + 19.92 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:66 + 17.86 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:95 + 13.07 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:141 + 11.56 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:98 + 9.61 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:101 + 8.42 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:17 + 8.42 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:18 + 7.26 kB /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:94 + 6.92 kB /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:349 + 6.16 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + 6.16 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 4.68 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:30 + 3.85 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:133 + 3.08 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:43 + 3.08 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:70 + 3.08 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:86 + 2.76 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:140 + 2.43 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:31 + 708.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:75 + 600.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:51 + 464.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:19 + 80.00 B /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:337 + 40.00 B ./memory_profiler.rb:5 + 40.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:20 + 40.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:47 + +allocated memory by class +----------------------------------- + 372.06 kB String + 179.13 kB Array + 33.70 kB File + 25.82 kB Hash + 144.00 B Thread::Mutex + 80.00 B Proc + 40.00 B Process::Status + 40.00 B Set + +allocated objects by gem +----------------------------------- + 7808 other + 175 set + +allocated objects by file +----------------------------------- + 7807 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb + 175 /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb + 1 ./memory_profiler.rb + +allocated objects by location +----------------------------------- + 2954 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 844 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:122 + 645 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:143 + 501 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:54 + 499 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:59 + 498 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:66 + 462 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + 229 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:77 + 173 /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:349 + 154 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + 154 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 154 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:44 + 78 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:42 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:101 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:141 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:43 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:70 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:86 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:95 + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:98 + 69 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:140 + 9 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:51 + 3 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:133 + 3 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:30 + 3 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:31 + 3 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:75 + 2 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:19 + 1 ./memory_profiler.rb:5 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:17 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:18 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:20 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:47 + 1 /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:337 + 1 /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:94 + +allocated objects by class +----------------------------------- + 5948 String + 1945 Array + 81 Hash + 4 File + 2 Thread::Mutex + 1 Proc + 1 Process::Status + 1 Set + +retained memory by gem +----------------------------------- + 4.72 kB other + +retained memory by file +----------------------------------- + 4.72 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb + +retained memory by location +----------------------------------- + 4.64 kB /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:30 + 40.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:51 + 40.00 B /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:86 + +retained memory by class +----------------------------------- + 4.68 kB String + 40.00 B Process::Status + +retained objects by gem +----------------------------------- + 4 other + +retained objects by file +----------------------------------- + 4 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb + +retained objects by location +----------------------------------- + 2 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:30 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:51 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:86 + +retained objects by class +----------------------------------- + 3 String + 1 Process::Status + + +Allocated String Report +----------------------------------- + 422 "SESSION" + 422 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + + 95 "0" + 94 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 81 "1" + 80 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 77 "user" + 77 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 75 "2" + 74 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 69 "3" + 68 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 59 "4" + 58 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 46 "5" + 45 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 45 "6" + 44 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 37 "7" + 36 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 22 "8" + 21 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 18 "72" + 17 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 17 "14" + 15 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 16 "52" + 15 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 16 "60" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 3 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 15 "113" + 8 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 7 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + + 15 "18" + 14 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 15 "37" + 14 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 15 "51" + 14 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 14 "13" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 14 "29" + 13 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 14 "47" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 13 "17" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 13 "45" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 13 "70" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 13 "73" + 12 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 13 "92" + 8 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 4 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + + 12 "21" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "27" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "30" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "31" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "35" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "46" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "49" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "59" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "64" + 11 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "67" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 12 "71" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "12" + 8 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "26" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "36" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "41" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "57" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "74" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "75" + 9 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "76" + 10 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 11 "90" + 8 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 2 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:142 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:139 + + 10 "19" + 9 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 10 "38" + 9 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + 10 "44" + 9 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:105 + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:85 + + +Retained String Report +----------------------------------- + 2 "{\"totalUsers\":77,\"uniqueBrowsersCount\":172,\"totalSessions\":422,\"allBrowsers\":\"CHROME 1,CHROME 10,CHROME 11,CHROME 12,CHROME 13,CHROME 14,CHROME 16,CHROME 17,CHROME 18,CHROME 2,CHROME 20,CHROME 21,CHRO" + 2 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:30 + + 1 "Jerome Corene" + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:86 + diff --git a/benchmarks/RAM/reports/profile.callgrind.out.11544 b/benchmarks/RAM/reports/profile.callgrind.out.11544 new file mode 100644 index 00000000..23e0b3f5 --- /dev/null +++ b/benchmarks/RAM/reports/profile.callgrind.out.11544 @@ -0,0 +1,334 @@ +events: memory + +fl= +fn=IO::close +0 0 + +fl= +fn=IO::write +0 40 + +fl= +fn=String::to_s +0 0 + +fl= +fn=String::encode +0 54560 + +fl= +fn=Symbol::to_s +0 22040 + +fl= +fn=Hash::keys +0 3200 + +fl= +fn=JSON/Ext/Generator/State::initialize_copy +0 0 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 40 +cfl= +cfn=Kernel::dup +calls=1 0 +0 40 +cfl= +cfn=Hash::keys +calls=80 0 +0 3200 +cfl= +cfn=Symbol::to_s +calls=551 0 +0 22040 +cfl= +cfn=String::encode +calls=1286 0 +0 54560 +cfl= +cfn=String::to_s +calls=78 0 +0 0 + +fl= +fn=Array::reverse +0 3120 + +fl= +fn=Array::sort! +0 5520 + +fl= +fn=Integer::to_s +0 6240 + +fl= +fn=Hash::each_value +0 6320 +cfl= +cfn=Integer::to_s +calls=156 82 +82 6240 +cfl= +cfn=Array::sort! +calls=156 83 +83 5520 +cfl= +cfn=Array::join +calls=78 84 +84 3120 +cfl= +cfn=String::split +calls=78 86 +86 20000 +cfl= +cfn=Array::reverse +calls=78 86 +86 3120 + +fl= +fn=Array::join +0 3160 + +fl= +fn=Hash::each_key +0 0 + +fl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +fn=Set::each +336 80 +cfl= +cfn=Hash::each_key +calls=1 338 +338 0 + +fl= +fn=Enumerable::sort +0 120 +cfl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +cfn=Set::each +calls=1 0 +0 80 + +fl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +fn=Set::length +161 0 + +fl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +fn=Object::prepare_report +77 40 +cfl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +cfn=Set::length +calls=1 78 +78 0 +cfl= +cfn=Enumerable::sort +calls=1 79 +79 200 +cfl= +cfn=Array::join +calls=1 79 +79 40 +cfl= +cfn=Hash::each_value +calls=1 81 +81 44320 + +fl= +fn=String::chomp +0 16880 + +fl= +fn=String::to_i +0 0 + +fl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +fn=Set::<< +348 6920 + +fl= +fn=Array::shift +0 0 + +fl= +fn=String::upcase! +0 0 + +fl= +fn=String::initialize_copy +0 0 + +fl= +fn=Kernel::initialize_dup +0 0 +cfl= +cfn=String::initialize_copy +calls=78 0 +0 0 +cfl= +cfn=JSON/Ext/Generator/State::initialize_copy +calls=1 0 +0 0 + +fl= +fn=Kernel::dup +0 3200 +cfl= +cfn=Kernel::initialize_dup +calls=79 0 +0 0 + +fl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +fn=Object::make_report +39 38136 +cfl= +cfn=Kernel::dup +calls=78 41 +41 3160 +cfl= +cfn=String::upcase! +calls=422 50 +50 0 +cfl= +cfn=String::split +calls=422 51 +51 118160 +cfl= +cfn=Array::shift +calls=2532 56 +56 0 +cfl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +cfn=Set::<< +calls=422 60 +60 6920 +cfl= +cfn=String::include? +calls=306 61 +61 0 +cfl= +cfn=String::to_i +calls=1014 65 +65 0 +cfl= +cfn=String::chomp +calls=422 68 +68 16880 + +fl= +fn=String::split +0 156880 + +fl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +fn=Object::user_name +30 3120 +cfl= +cfn=String::split +calls=78 31 +31 18720 + +fl= +fn=String::include? +0 0 + +fl= +fn=IO::foreach^ +0 40120 +cfl= +cfn=String::include? +calls=500 18 +18 0 +cfl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +cfn=Object::user_name +calls=78 19 +19 21840 +cfl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +cfn=Object::make_report +calls=500 20 +20 183256 + +fl= +fn=NilClass::nil? +0 0 + +fl= +fn=Hash::initialize +0 0 + +fl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +fn=Set::initialize +93 0 +cfl= +cfn=Class::new +calls=1 94 +94 232 +cfl= +cfn=NilClass::nil? +calls=1 96 +96 0 + +fl= +fn=Class::new +0 272 +cfl=/usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb +cfn=Set::initialize +calls=1 0 +0 232 +cfl= +cfn=Hash::initialize +calls=1 0 +0 0 + +fl= +fn=File::initialize +0 0 + +fl= +fn=IO::new^ +0 40 +cfl= +cfn=File::initialize +calls=1 0 +0 0 + +fl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +fn=Object::work +13 544 +cfl= +cfn=IO::new^ +calls=1 14 +14 40 +cfl= +cfn=Class::new +calls=1 15 +15 272 +cfl= +cfn=IO::foreach^ +calls=1 17 +17 245216 +cfl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +cfn=Object::prepare_report +calls=1 23 +23 44600 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 24 +24 79880 +cfl= +cfn=IO::write +calls=1 24 +24 40 +cfl= +cfn=IO::close +calls=1 25 +25 0 + +fl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/benchmarks/RAM/ruby-prof.rb +fn=[global]:: +8 40 +cfl=/media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb +cfn=Object::work +calls=1 8 +8 370592 + diff --git a/benchmarks/RAM/reports/stackprof.dump b/benchmarks/RAM/reports/stackprof.dump new file mode 100644 index 00000000..9e7ef7d9 Binary files /dev/null and b/benchmarks/RAM/reports/stackprof.dump differ diff --git a/benchmarks/RAM/ruby-prof.rb b/benchmarks/RAM/ruby-prof.rb new file mode 100644 index 00000000..a10e5619 --- /dev/null +++ b/benchmarks/RAM/ruby-prof.rb @@ -0,0 +1,24 @@ +require 'ruby-prof' +require_relative '../../task-2' + +RubyProf.measure_mode = RubyProf::MEMORY +# RubyProf.measure_mode = RubyProf::ALLOCATIONS + +result = RubyProf.profile do + work('../../data-500.txt') +end + +printer = RubyProf::FlatPrinter.new(result) +printer.print(File.open('reports/flat-500.txt', 'w+')) +# +# printer = RubyProf::DotPrinter.new(result) +# printer.print(File.open('reports/graphviz.dot', 'w+')) +# +# printer = RubyProf::GraphHtmlPrinter.new(result) +# printer.print(File.open('reports/graph.html', 'w+')) + +# printer = RubyProf::CallStackPrinter.new(result) +# printer.print(File.open('reports/profile.graph.html', 'w+')) + +printer = RubyProf::CallTreePrinter.new(result) +printer.print(path: 'reports', profile: 'profile') \ No newline at end of file diff --git a/benchmarks/RAM/stackprof.rb b/benchmarks/RAM/stackprof.rb new file mode 100644 index 00000000..a2f59ed6 --- /dev/null +++ b/benchmarks/RAM/stackprof.rb @@ -0,0 +1,7 @@ +require 'stackprof' +require_relative '../../task-2' + +# Note mode: :object (Wall-time, CPU-time) +StackProf.run(mode: :object, out: 'reports/stackprof.dump', raw: true) do + work('../../data-500.txt') +end \ No newline at end of file diff --git a/benchmarks/fixtures/data-10.txt b/benchmarks/fixtures/data-10.txt new file mode 100644 index 00000000..aa8357c8 --- /dev/null +++ b/benchmarks/fixtures/data-10.txt @@ -0,0 +1,10 @@ +user,0,Leida,Cira,0 +session,0,0,Safari 29,87,2016-10-23 +session,0,1,Firefox 12,118,2017-02-27 +session,0,2,Internet Explorer 28,31,2017-03-28 +session,0,3,Internet Explorer 28,109,2016-09-15 +session,0,4,Safari 39,104,2017-09-27 +session,0,5,Internet Explorer 35,6,2016-09-01 +user,1,Palmer,Katrina,65 +session,1,0,Safari 17,12,2016-10-21 +session,1,1,Firefox 32,3,2016-12-20 diff --git a/benchmarks/fixtures/data-100.txt b/benchmarks/fixtures/data-100.txt new file mode 100644 index 00000000..16b000ec --- /dev/null +++ b/benchmarks/fixtures/data-100.txt @@ -0,0 +1,100 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +session,2,4,Internet Explorer 17,22,2016-07-10 +session,2,5,Firefox 26,76,2017-02-06 +session,2,6,Chrome 14,88,2017-02-19 +session,2,7,Safari 31,113,2018-04-12 +session,2,8,Chrome 20,72,2016-09-04 +session,2,9,Safari 13,14,2017-07-26 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 +session,4,0,Chrome 11,49,2019-02-05 +session,4,1,Safari 44,18,2017-09-01 +session,4,2,Firefox 32,88,2017-06-01 +session,4,3,Chrome 28,82,2018-03-18 +session,4,4,Firefox 38,36,2018-06-11 +session,4,5,Safari 14,11,2017-04-06 +session,4,6,Safari 27,116,2017-05-30 +session,4,7,Safari 24,36,2018-06-12 +session,4,8,Firefox 3,28,2018-01-05 +user,5,Lou,Lean,39 +session,5,0,Internet Explorer 42,74,2017-08-20 +session,5,1,Internet Explorer 1,80,2018-11-22 +session,5,2,Chrome 18,105,2018-01-17 +user,6,Deedra,Minta,44 +session,6,0,Firefox 32,27,2017-07-07 +session,6,1,Firefox 45,48,2017-07-22 +session,6,2,Safari 33,55,2018-07-09 +session,6,3,Safari 1,14,2016-11-08 +session,6,4,Firefox 39,18,2017-02-06 +session,6,5,Safari 12,52,2016-07-18 +session,6,6,Firefox 18,84,2016-08-16 +session,6,7,Chrome 2,114,2016-10-18 +user,7,Loria,Vernetta,68 +session,7,0,Safari 14,51,2019-01-25 +session,7,1,Internet Explorer 29,88,2016-10-12 +session,7,2,Firefox 32,55,2016-11-15 +session,7,3,Safari 4,20,2016-11-19 +session,7,4,Chrome 42,95,2018-02-10 +session,7,5,Safari 36,88,2018-03-30 +session,7,6,Safari 7,74,2017-05-27 +session,7,7,Safari 18,67,2017-02-22 +session,7,8,Chrome 24,26,2018-11-01 +user,8,Abdul,Venessa,55 +session,8,0,Internet Explorer 1,60,2018-12-02 +session,8,1,Chrome 3,63,2016-10-02 +session,8,2,Safari 41,99,2017-01-12 +session,8,3,Firefox 13,69,2017-04-17 +session,8,4,Safari 31,115,2018-04-08 +session,8,5,Chrome 30,77,2019-01-28 +session,8,6,Safari 43,56,2017-05-07 +user,9,Brooks,Janae,6 +session,9,0,Internet Explorer 36,11,2018-08-11 +user,10,Rey,Coy,95 +session,10,0,Internet Explorer 27,115,2017-08-05 +session,10,1,Internet Explorer 21,119,2018-11-15 +session,10,2,Internet Explorer 2,0,2016-06-10 +session,10,3,Safari 13,44,2018-04-07 +session,10,4,Firefox 37,26,2018-05-04 +user,11,Cyrus,Danyel,41 +session,11,0,Firefox 34,118,2016-10-14 +session,11,1,Internet Explorer 34,45,2017-10-10 +session,11,2,Internet Explorer 38,70,2017-07-10 +user,12,Valentin,Emilio,21 +session,12,0,Chrome 13,28,2018-04-23 +session,12,1,Firefox 35,17,2018-11-29 +session,12,2,Firefox 19,68,2018-05-03 +session,12,3,Internet Explorer 14,2,2016-09-18 +session,12,4,Firefox 15,97,2018-04-15 +session,12,5,Safari 26,40,2016-06-13 +user,13,Mitchell,Hobert,78 +session,13,0,Internet Explorer 32,89,2019-02-07 +session,13,1,Firefox 17,0,2017-11-05 +session,13,2,Chrome 17,117,2018-12-12 +session,13,3,Firefox 28,3,2016-12-01 diff --git a/benchmarks/fixtures/data-20.txt b/benchmarks/fixtures/data-20.txt new file mode 100644 index 00000000..0e6fac9b --- /dev/null +++ b/benchmarks/fixtures/data-20.txt @@ -0,0 +1,20 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 diff --git a/benchmarks/fixtures/data-30.txt b/benchmarks/fixtures/data-30.txt new file mode 100644 index 00000000..ad861a08 --- /dev/null +++ b/benchmarks/fixtures/data-30.txt @@ -0,0 +1,30 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 diff --git a/benchmarks/fixtures/data-50.txt b/benchmarks/fixtures/data-50.txt new file mode 100644 index 00000000..4e9ac78f --- /dev/null +++ b/benchmarks/fixtures/data-50.txt @@ -0,0 +1,50 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +session,2,4,Internet Explorer 17,22,2016-07-10 +session,2,5,Firefox 26,76,2017-02-06 +session,2,6,Chrome 14,88,2017-02-19 +session,2,7,Safari 31,113,2018-04-12 +session,2,8,Chrome 20,72,2016-09-04 +session,2,9,Safari 13,14,2017-07-26 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 +session,4,0,Chrome 11,49,2019-02-05 +session,4,1,Safari 44,18,2017-09-01 +session,4,2,Firefox 32,88,2017-06-01 +session,4,3,Chrome 28,82,2018-03-18 +session,4,4,Firefox 38,36,2018-06-11 +session,4,5,Safari 14,11,2017-04-06 +session,4,6,Safari 27,116,2017-05-30 +session,4,7,Safari 24,36,2018-06-12 +session,4,8,Firefox 3,28,2018-01-05 +user,5,Lou,Lean,39 +session,5,0,Internet Explorer 42,74,2017-08-20 +session,5,1,Internet Explorer 1,80,2018-11-22 +session,5,2,Chrome 18,105,2018-01-17 +user,6,Deedra,Minta,44 diff --git a/benchmarks/fixtures/data-500.txt b/benchmarks/fixtures/data-500.txt new file mode 100644 index 00000000..8e2d01db --- /dev/null +++ b/benchmarks/fixtures/data-500.txt @@ -0,0 +1,500 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +session,2,4,Internet Explorer 17,22,2016-07-10 +session,2,5,Firefox 26,76,2017-02-06 +session,2,6,Chrome 14,88,2017-02-19 +session,2,7,Safari 31,113,2018-04-12 +session,2,8,Chrome 20,72,2016-09-04 +session,2,9,Safari 13,14,2017-07-26 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 +session,4,0,Chrome 11,49,2019-02-05 +session,4,1,Safari 44,18,2017-09-01 +session,4,2,Firefox 32,88,2017-06-01 +session,4,3,Chrome 28,82,2018-03-18 +session,4,4,Firefox 38,36,2018-06-11 +session,4,5,Safari 14,11,2017-04-06 +session,4,6,Safari 27,116,2017-05-30 +session,4,7,Safari 24,36,2018-06-12 +session,4,8,Firefox 3,28,2018-01-05 +user,5,Lou,Lean,39 +session,5,0,Internet Explorer 42,74,2017-08-20 +session,5,1,Internet Explorer 1,80,2018-11-22 +session,5,2,Chrome 18,105,2018-01-17 +user,6,Deedra,Minta,44 +session,6,0,Firefox 32,27,2017-07-07 +session,6,1,Firefox 45,48,2017-07-22 +session,6,2,Safari 33,55,2018-07-09 +session,6,3,Safari 1,14,2016-11-08 +session,6,4,Firefox 39,18,2017-02-06 +session,6,5,Safari 12,52,2016-07-18 +session,6,6,Firefox 18,84,2016-08-16 +session,6,7,Chrome 2,114,2016-10-18 +user,7,Loria,Vernetta,68 +session,7,0,Safari 14,51,2019-01-25 +session,7,1,Internet Explorer 29,88,2016-10-12 +session,7,2,Firefox 32,55,2016-11-15 +session,7,3,Safari 4,20,2016-11-19 +session,7,4,Chrome 42,95,2018-02-10 +session,7,5,Safari 36,88,2018-03-30 +session,7,6,Safari 7,74,2017-05-27 +session,7,7,Safari 18,67,2017-02-22 +session,7,8,Chrome 24,26,2018-11-01 +user,8,Abdul,Venessa,55 +session,8,0,Internet Explorer 1,60,2018-12-02 +session,8,1,Chrome 3,63,2016-10-02 +session,8,2,Safari 41,99,2017-01-12 +session,8,3,Firefox 13,69,2017-04-17 +session,8,4,Safari 31,115,2018-04-08 +session,8,5,Chrome 30,77,2019-01-28 +session,8,6,Safari 43,56,2017-05-07 +user,9,Brooks,Janae,6 +session,9,0,Internet Explorer 36,11,2018-08-11 +user,10,Rey,Coy,95 +session,10,0,Internet Explorer 27,115,2017-08-05 +session,10,1,Internet Explorer 21,119,2018-11-15 +session,10,2,Internet Explorer 2,0,2016-06-10 +session,10,3,Safari 13,44,2018-04-07 +session,10,4,Firefox 37,26,2018-05-04 +user,11,Cyrus,Danyel,41 +session,11,0,Firefox 34,118,2016-10-14 +session,11,1,Internet Explorer 34,45,2017-10-10 +session,11,2,Internet Explorer 38,70,2017-07-10 +user,12,Valentin,Emilio,21 +session,12,0,Chrome 13,28,2018-04-23 +session,12,1,Firefox 35,17,2018-11-29 +session,12,2,Firefox 19,68,2018-05-03 +session,12,3,Internet Explorer 14,2,2016-09-18 +session,12,4,Firefox 15,97,2018-04-15 +session,12,5,Safari 26,40,2016-06-13 +user,13,Mitchell,Hobert,78 +session,13,0,Internet Explorer 32,89,2019-02-07 +session,13,1,Firefox 17,0,2017-11-05 +session,13,2,Chrome 17,117,2018-12-12 +session,13,3,Firefox 28,3,2016-12-01 +session,13,4,Firefox 9,26,2018-08-05 +session,13,5,Safari 27,113,2017-09-02 +session,13,6,Internet Explorer 20,92,2018-08-17 +session,13,7,Safari 11,103,2016-11-11 +session,13,8,Safari 36,26,2018-06-18 +session,13,9,Internet Explorer 22,33,2018-07-15 +user,14,Yuonne,Nicholle,52 +session,14,0,Safari 45,112,2018-01-23 +session,14,1,Firefox 50,54,2017-08-13 +session,14,2,Chrome 21,53,2018-10-08 +session,14,3,Firefox 24,30,2018-12-25 +session,14,4,Chrome 26,117,2017-09-09 +session,14,5,Chrome 16,38,2019-01-29 +session,14,6,Chrome 48,72,2016-08-12 +session,14,7,Safari 23,36,2016-10-05 +session,14,8,Firefox 12,45,2018-05-17 +user,15,Marlene,Ling,76 +session,15,0,Chrome 50,60,2018-06-29 +user,16,Salina,Eddie,27 +session,16,0,Internet Explorer 26,10,2018-01-10 +session,16,1,Chrome 23,13,2017-01-04 +user,17,Ernestine,Clifton,6 +session,17,0,Chrome 13,28,2016-12-05 +session,17,1,Chrome 10,97,2017-11-13 +session,17,2,Safari 34,39,2017-08-24 +session,17,3,Safari 48,27,2018-03-27 +session,17,4,Internet Explorer 32,76,2016-10-22 +session,17,5,Firefox 42,106,2016-12-23 +session,17,6,Chrome 13,72,2018-01-08 +session,17,7,Chrome 24,37,2017-12-21 +user,18,Homer,Odelia,62 +session,18,0,Safari 10,3,2018-01-19 +session,18,1,Internet Explorer 25,81,2017-11-21 +session,18,2,Firefox 4,110,2017-05-17 +session,18,3,Firefox 12,92,2018-01-15 +session,18,4,Safari 43,88,2017-02-04 +session,18,5,Internet Explorer 42,19,2018-06-30 +session,18,6,Firefox 17,47,2016-09-10 +user,19,Jean,Gregg,96 +session,19,0,Internet Explorer 49,12,2016-10-19 +session,19,1,Firefox 36,56,2018-04-20 +session,19,2,Internet Explorer 32,3,2018-01-02 +session,19,3,Internet Explorer 20,85,2018-03-12 +session,19,4,Internet Explorer 21,21,2017-01-10 +session,19,5,Firefox 46,99,2017-08-19 +user,20,Jacinta,Erinn,34 +session,20,0,Chrome 44,49,2018-01-29 +session,20,1,Internet Explorer 33,90,2017-11-02 +session,20,2,Safari 22,44,2018-10-14 +session,20,3,Firefox 39,32,2019-01-07 +user,21,Melita,Mika,45 +session,21,0,Firefox 30,1,2016-08-03 +session,21,1,Safari 48,64,2017-05-10 +session,21,2,Chrome 40,61,2018-10-07 +session,21,3,Safari 37,0,2018-05-09 +session,21,4,Chrome 12,98,2017-02-24 +user,22,Matthew,Lucretia,23 +session,22,0,Internet Explorer 23,86,2017-08-02 +user,23,Maurice,Paz,38 +session,23,0,Internet Explorer 2,51,2017-09-28 +session,23,1,Internet Explorer 11,60,2016-08-02 +session,23,2,Firefox 31,32,2017-04-30 +user,24,Jessica,Brandi,8 +session,24,0,Chrome 12,111,2017-09-18 +user,25,Marget,Ming,58 +session,25,0,Chrome 31,51,2018-05-18 +session,25,1,Safari 9,63,2016-12-20 +session,25,2,Firefox 48,75,2018-03-26 +session,25,3,Firefox 16,51,2017-09-02 +user,26,Audria,Roselyn,85 +session,26,0,Firefox 22,84,2018-02-13 +session,26,1,Safari 14,52,2017-03-17 +session,26,2,Firefox 36,96,2016-11-12 +session,26,3,Firefox 6,16,2017-12-08 +user,27,Leilani,Ines,86 +session,27,0,Firefox 29,91,2016-10-03 +session,27,1,Chrome 44,66,2016-05-27 +session,27,2,Safari 9,90,2017-08-28 +user,28,Philip,Daysi,2 +session,28,0,Internet Explorer 23,27,2018-09-21 +session,28,1,Safari 4,116,2018-09-19 +user,29,Delmar,Otilia,44 +session,29,0,Safari 17,0,2016-08-02 +session,29,1,Internet Explorer 39,101,2017-04-21 +session,29,2,Internet Explorer 8,0,2016-10-19 +session,29,3,Internet Explorer 20,36,2017-02-05 +session,29,4,Internet Explorer 25,73,2018-07-31 +session,29,5,Chrome 18,49,2017-12-14 +session,29,6,Firefox 24,81,2018-09-06 +user,30,Newton,Brianna,34 +session,30,0,Chrome 38,110,2016-11-21 +session,30,1,Firefox 34,47,2017-08-27 +session,30,2,Internet Explorer 27,74,2017-07-13 +session,30,3,Internet Explorer 29,118,2018-03-14 +session,30,4,Chrome 16,24,2017-02-11 +session,30,5,Firefox 37,85,2019-01-26 +session,30,6,Firefox 34,22,2016-10-19 +session,30,7,Firefox 14,14,2018-04-11 +session,30,8,Firefox 27,33,2017-12-07 +user,31,Sherman,Pearly,65 +session,31,0,Firefox 5,113,2016-05-22 +session,31,1,Safari 1,50,2018-08-06 +session,31,2,Internet Explorer 6,29,2016-06-13 +session,31,3,Internet Explorer 48,103,2017-12-15 +session,31,4,Firefox 32,106,2018-07-26 +session,31,5,Safari 27,105,2016-12-08 +session,31,6,Safari 5,44,2016-09-19 +session,31,7,Safari 41,21,2017-02-19 +session,31,8,Firefox 22,66,2017-11-17 +user,32,Steve,Esmeralda,73 +session,32,0,Chrome 41,64,2018-07-13 +session,32,1,Firefox 11,50,2016-12-18 +session,32,2,Firefox 38,90,2018-12-26 +session,32,3,Firefox 41,114,2018-04-01 +session,32,4,Safari 49,22,2018-05-28 +session,32,5,Firefox 12,72,2017-09-12 +user,33,Young,Todd,59 +session,33,0,Chrome 10,59,2016-12-28 +session,33,1,Internet Explorer 28,92,2018-06-14 +session,33,2,Chrome 28,29,2017-04-28 +session,33,3,Firefox 1,52,2018-04-25 +session,33,4,Safari 46,25,2017-09-20 +session,33,5,Safari 32,57,2016-10-07 +user,34,Wen,Sherill,39 +session,34,0,Internet Explorer 18,92,2016-09-05 +session,34,1,Firefox 16,95,2017-08-27 +user,35,Margarita,Aileen,78 +session,35,0,Chrome 9,72,2018-02-27 +session,35,1,Firefox 27,18,2018-05-23 +session,35,2,Firefox 42,113,2016-07-22 +session,35,3,Safari 5,27,2018-09-14 +session,35,4,Chrome 49,17,2018-10-24 +session,35,5,Internet Explorer 17,75,2017-08-27 +session,35,6,Internet Explorer 46,49,2016-09-12 +user,36,Rich,Maddie,58 +session,36,0,Chrome 37,36,2016-08-22 +session,36,1,Chrome 21,81,2016-05-31 +session,36,2,Safari 38,71,2018-10-04 +user,37,Marcie,Modesto,76 +session,37,0,Internet Explorer 37,45,2017-01-06 +session,37,1,Chrome 27,58,2018-04-14 +session,37,2,Safari 43,108,2018-04-05 +session,37,3,Firefox 29,67,2016-12-09 +session,37,4,Firefox 43,90,2016-10-24 +session,37,5,Firefox 24,90,2017-04-30 +session,37,6,Chrome 3,104,2016-12-20 +session,37,7,Firefox 47,106,2017-06-15 +user,38,Amparo,Elvis,71 +session,38,0,Safari 9,74,2017-12-08 +session,38,1,Chrome 50,103,2016-05-30 +session,38,2,Internet Explorer 23,84,2018-06-21 +session,38,3,Chrome 6,67,2018-04-15 +session,38,4,Chrome 26,99,2017-10-19 +session,38,5,Chrome 36,73,2016-11-20 +session,38,6,Chrome 28,1,2018-01-26 +session,38,7,Chrome 38,21,2017-02-26 +user,39,Bailey,Brittanie,58 +session,39,0,Firefox 31,52,2018-12-19 +session,39,1,Safari 12,15,2017-10-16 +session,39,2,Safari 28,14,2016-11-08 +session,39,3,Chrome 50,60,2017-07-02 +user,40,Tawanda,Georgeann,70 +session,40,0,Safari 21,51,2018-05-02 +session,40,1,Firefox 34,85,2017-11-25 +session,40,2,Firefox 31,0,2017-08-11 +session,40,3,Internet Explorer 31,88,2018-01-06 +user,41,Jonnie,Louise,57 +session,41,0,Internet Explorer 16,7,2018-12-07 +session,41,1,Chrome 41,74,2019-02-03 +session,41,2,Safari 11,98,2018-11-28 +session,41,3,Firefox 16,7,2018-03-17 +session,41,4,Chrome 49,99,2018-10-10 +session,41,5,Firefox 46,18,2018-01-04 +session,41,6,Safari 6,54,2017-03-02 +session,41,7,Chrome 2,113,2016-08-18 +session,41,8,Safari 6,54,2019-02-11 +session,41,9,Firefox 46,40,2016-05-22 +user,42,Jamar,Annita,17 +session,42,0,Safari 8,82,2018-04-28 +session,42,1,Chrome 41,82,2016-05-28 +session,42,2,Firefox 47,35,2018-08-09 +user,43,Kurt,Camie,33 +session,43,0,Internet Explorer 16,90,2018-07-22 +session,43,1,Firefox 46,16,2017-07-23 +session,43,2,Safari 47,19,2016-09-26 +user,44,Gail,Morgan,79 +session,44,0,Safari 46,101,2018-10-31 +session,44,1,Firefox 49,42,2017-05-31 +session,44,2,Safari 50,61,2018-10-24 +session,44,3,Chrome 23,89,2016-07-29 +user,45,Trenton,Carlee,6 +session,45,0,Internet Explorer 27,70,2017-06-05 +session,45,1,Chrome 1,36,2017-05-04 +session,45,2,Firefox 5,29,2018-08-30 +session,45,3,Internet Explorer 38,81,2018-08-27 +session,45,4,Chrome 50,21,2017-01-21 +session,45,5,Internet Explorer 5,29,2017-12-14 +session,45,6,Firefox 42,102,2017-05-16 +session,45,7,Chrome 44,101,2017-12-31 +session,45,8,Internet Explorer 45,17,2019-02-08 +user,46,Ailene,Melba,3 +session,46,0,Chrome 8,73,2019-01-27 +session,46,1,Safari 43,6,2016-10-21 +session,46,2,Firefox 35,22,2018-09-01 +session,46,3,Firefox 29,19,2016-09-26 +session,46,4,Firefox 45,118,2017-01-11 +session,46,5,Chrome 38,47,2017-04-18 +session,46,6,Safari 40,100,2016-10-28 +user,47,Mohamed,Lorina,58 +session,47,0,Safari 48,75,2016-08-03 +session,47,1,Internet Explorer 27,18,2018-12-10 +session,47,2,Internet Explorer 39,117,2017-01-30 +session,47,3,Internet Explorer 42,90,2017-02-21 +session,47,4,Safari 47,15,2016-12-24 +session,47,5,Internet Explorer 38,59,2018-09-27 +session,47,6,Safari 6,4,2016-10-13 +user,48,Abbie,Young,83 +session,48,0,Safari 1,46,2017-08-17 +session,48,1,Firefox 8,4,2017-01-15 +session,48,2,Firefox 15,1,2018-09-06 +session,48,3,Chrome 4,46,2018-11-27 +session,48,4,Firefox 11,36,2016-11-29 +session,48,5,Chrome 34,67,2018-08-28 +session,48,6,Internet Explorer 50,27,2016-09-23 +user,49,Coleman,Mardell,78 +session,49,0,Chrome 32,46,2018-08-03 +session,49,1,Firefox 15,73,2018-10-24 +session,49,2,Safari 34,67,2016-07-16 +session,49,3,Safari 39,6,2019-02-04 +session,49,4,Firefox 37,31,2018-08-28 +session,49,5,Firefox 33,103,2016-09-25 +session,49,6,Chrome 12,68,2016-06-15 +user,50,Edwin,Joseph,20 +session,50,0,Safari 37,55,2017-10-04 +session,50,1,Safari 21,111,2018-04-27 +user,51,Sonya,Gay,42 +session,51,0,Chrome 34,107,2017-05-31 +session,51,1,Internet Explorer 32,1,2016-11-07 +session,51,2,Chrome 38,109,2018-07-02 +session,51,3,Internet Explorer 41,86,2017-08-08 +session,51,4,Internet Explorer 32,26,2016-09-17 +session,51,5,Firefox 10,52,2016-05-24 +session,51,6,Safari 5,9,2018-03-19 +session,51,7,Chrome 28,44,2017-01-28 +user,52,Aaron,Debbra,66 +session,52,0,Firefox 10,35,2016-10-24 +session,52,1,Safari 29,16,2016-09-17 +session,52,2,Chrome 27,66,2016-12-27 +session,52,3,Firefox 36,1,2018-06-20 +session,52,4,Internet Explorer 9,25,2017-05-07 +session,52,5,Internet Explorer 31,62,2016-06-19 +session,52,6,Firefox 44,63,2018-06-29 +session,52,7,Safari 11,56,2017-07-25 +user,53,Markus,Shyla,36 +session,53,0,Chrome 48,94,2018-05-24 +session,53,1,Chrome 6,72,2017-07-10 +session,53,2,Safari 1,21,2017-03-20 +session,53,3,Safari 6,107,2017-08-28 +session,53,4,Internet Explorer 17,67,2017-09-28 +session,53,5,Chrome 43,117,2017-10-15 +user,54,Velia,Corrine,63 +session,54,0,Firefox 27,92,2018-03-16 +user,55,Percy,Tarra,30 +session,55,0,Safari 27,14,2017-04-27 +session,55,1,Safari 45,15,2017-02-03 +session,55,2,Chrome 1,40,2016-06-26 +session,55,3,Internet Explorer 27,3,2017-09-12 +session,55,4,Internet Explorer 45,18,2017-09-27 +user,56,Laure,Lee,53 +session,56,0,Chrome 18,89,2018-04-30 +session,56,1,Firefox 23,97,2018-02-28 +session,56,2,Firefox 49,95,2018-05-03 +session,56,3,Firefox 42,84,2017-06-18 +user,57,Claude,Lauren,57 +session,57,0,Internet Explorer 31,20,2018-06-25 +session,57,1,Internet Explorer 29,37,2017-05-04 +session,57,2,Firefox 6,81,2018-06-10 +session,57,3,Internet Explorer 23,53,2018-10-14 +session,57,4,Firefox 15,54,2016-05-24 +session,57,5,Chrome 22,51,2017-02-07 +session,57,6,Chrome 44,0,2018-08-02 +session,57,7,Firefox 17,58,2016-10-02 +session,57,8,Internet Explorer 40,119,2018-07-24 +user,58,Timmy,Monica,41 +session,58,0,Internet Explorer 7,5,2017-05-07 +session,58,1,Firefox 16,82,2018-09-10 +session,58,2,Safari 26,99,2016-08-27 +session,58,3,Firefox 6,119,2018-10-31 +session,58,4,Firefox 29,42,2018-06-13 +session,58,5,Firefox 19,92,2016-08-25 +user,59,Mark,Shasta,95 +session,59,0,Chrome 50,102,2017-05-25 +session,59,1,Safari 39,25,2017-05-31 +session,59,2,Firefox 33,60,2016-06-25 +session,59,3,Safari 12,54,2018-05-09 +session,59,4,Internet Explorer 16,84,2018-10-13 +session,59,5,Chrome 39,27,2018-10-31 +session,59,6,Chrome 38,113,2018-07-05 +session,59,7,Firefox 45,109,2017-06-12 +user,60,Rhona,Alline,14 +session,60,0,Internet Explorer 2,35,2017-10-21 +session,60,1,Chrome 11,61,2016-09-01 +session,60,2,Firefox 13,42,2019-02-11 +session,60,3,Chrome 5,48,2017-02-11 +session,60,4,Safari 24,35,2018-09-05 +session,60,5,Firefox 44,115,2016-06-07 +user,61,Lester,Margaret,34 +session,61,0,Internet Explorer 18,98,2018-08-23 +session,61,1,Chrome 5,86,2018-12-03 +user,62,Renna,Sam,59 +session,62,0,Internet Explorer 27,73,2018-12-14 +session,62,1,Internet Explorer 49,73,2018-11-30 +session,62,2,Internet Explorer 5,113,2016-11-14 +user,63,Jacquline,Marth,98 +session,63,0,Firefox 43,77,2018-12-16 +session,63,1,Safari 18,84,2016-12-11 +user,64,Alia,Mary,74 +session,64,0,Internet Explorer 46,37,2016-11-26 +session,64,1,Safari 15,53,2016-12-06 +session,64,2,Internet Explorer 31,18,2017-01-01 +session,64,3,Safari 43,112,2016-10-05 +session,64,4,Firefox 35,76,2017-03-16 +session,64,5,Chrome 17,61,2018-03-25 +session,64,6,Internet Explorer 37,26,2018-07-31 +session,64,7,Chrome 36,55,2016-12-13 +session,64,8,Safari 4,66,2017-05-27 +user,65,Patricia,Winston,65 +session,65,0,Internet Explorer 35,118,2018-09-29 +session,65,1,Firefox 14,27,2017-05-28 +session,65,2,Chrome 18,15,2017-06-10 +session,65,3,Firefox 26,82,2016-11-23 +session,65,4,Safari 32,114,2016-09-05 +session,65,5,Internet Explorer 17,52,2016-11-05 +session,65,6,Chrome 44,107,2018-03-26 +session,65,7,Firefox 4,42,2017-05-15 +session,65,8,Internet Explorer 50,47,2017-10-13 +user,66,Jerry,Nicolasa,83 +session,66,0,Firefox 20,80,2017-07-23 +user,67,Randal,Pamella,16 +session,67,0,Chrome 37,10,2018-01-07 +session,67,1,Chrome 42,6,2017-01-26 +session,67,2,Firefox 34,14,2018-07-21 +user,68,Olen,Leia,88 +session,68,0,Chrome 35,47,2016-08-04 +session,68,1,Firefox 10,3,2018-09-15 +user,69,Jarod,Terence,28 +session,69,0,Internet Explorer 16,100,2016-08-06 +user,70,Jamie,Jeremy,32 +session,70,0,Internet Explorer 41,102,2018-04-24 +session,70,1,Firefox 33,46,2017-11-19 +session,70,2,Firefox 20,106,2018-06-30 +session,70,3,Safari 43,106,2018-05-03 +session,70,4,Internet Explorer 35,29,2018-03-18 +session,70,5,Chrome 34,20,2018-08-31 +session,70,6,Safari 44,74,2017-03-31 +session,70,7,Firefox 23,78,2017-04-20 +session,70,8,Internet Explorer 14,29,2018-07-14 +session,70,9,Internet Explorer 18,34,2018-08-11 +user,71,Hung,Delfina,63 +session,71,0,Chrome 11,0,2018-12-21 +session,71,1,Chrome 13,73,2018-11-11 +session,71,2,Internet Explorer 39,103,2016-11-29 +session,71,3,Chrome 11,74,2017-08-04 +session,71,4,Safari 35,90,2019-02-09 +session,71,5,Chrome 34,67,2019-02-12 +session,71,6,Chrome 13,68,2018-01-23 +session,71,7,Chrome 24,59,2018-01-27 +user,72,Kenisha,Belle,16 +session,72,0,Internet Explorer 42,72,2018-04-25 +session,72,1,Safari 2,75,2018-04-24 +session,72,2,Chrome 10,24,2016-06-14 +session,72,3,Chrome 40,113,2017-03-18 +session,72,4,Safari 37,13,2016-12-11 +session,72,5,Chrome 44,31,2018-12-19 +session,72,6,Internet Explorer 18,83,2018-03-19 +session,72,7,Chrome 45,4,2016-11-07 +session,72,8,Internet Explorer 22,83,2017-12-08 +session,72,9,Firefox 37,25,2018-09-09 +user,73,Tien,Kenyetta,30 +session,73,0,Firefox 38,99,2017-06-25 +session,73,1,Internet Explorer 41,80,2018-06-18 +session,73,2,Firefox 1,6,2017-08-09 +session,73,3,Firefox 15,69,2016-12-27 +session,73,4,Internet Explorer 42,96,2016-09-28 +user,74,Samantha,Tama,72 +session,74,0,Safari 33,12,2016-06-23 +user,75,Tyler,Santa,21 +session,75,0,Internet Explorer 40,102,2018-07-04 +session,75,1,Firefox 13,5,2016-06-05 +session,75,2,Safari 46,0,2016-09-16 +session,75,3,Firefox 37,107,2018-11-24 +session,75,4,Chrome 3,15,2018-12-29 +user,76,Jerome,Corene,46 +session,76,0,Chrome 23,42,2017-05-03 +session,76,1,Internet Explorer 8,44,2017-07-31 +session,76,2,Safari 1,71,2017-03-08 +session,76,3,Chrome 43,3,2018-03-31 +session,76,4,Chrome 35,22,2017-04-26 +session,76,5,Firefox 37,21,2016-11-01 +user,77,Lazaro,Raven,33 diff --git a/benchmarks/other-benchmark-ips.rb b/benchmarks/other-benchmark-ips.rb new file mode 100644 index 00000000..9ec8a139 --- /dev/null +++ b/benchmarks/other-benchmark-ips.rb @@ -0,0 +1,32 @@ +require 'benchmark/ips' +require 'set' + + +Benchmark.ips do |x| + @str = 'session,0,5,Internet Explorer 35,6,2016-09-01' + @hash = {:totalUsers=>3, :uniqueBrowsersCount=>14, :totalSessions=>15, :allBrowsers=>"CHROME 13,CHROME 20,CHROME 35,CHROME 6,FIREFOX 12,FIREFOX 32,FIREFOX 47,INTERNET EXPLORER 10,INTERNET EXPLORER 28,INTERNET EXPLORER 35,SAFARI 17,SAFARI 29,SAFARI 39,SAFARI 49", :usersStats=>{"Leida Cira"=>{:sessionsCount=>6, :totalTime=>"455 min.", :longestSession=>"118 min.", :browsers=>"FIREFOX 12, INTERNET EXPLORER 28, INTERNET EXPLORER 28, INTERNET EXPLORER 35, SAFARI 29, SAFARI 39", :usedIE=>true, :alwaysUsedChrome=>false, :dates=>["2017-09-27", "2017-03-28", "2017-02-27", "2016-10-23", "2016-09-15", "2016-09-01"]}, "Palmer Katrina"=>{:sessionsCount=>5, :totalTime=>"218 min.", :longestSession=>"116 min.", :browsers=>"CHROME 13, CHROME 6, FIREFOX 32, INTERNET EXPLORER 10, SAFARI 17", :usedIE=>true, :alwaysUsedChrome=>false, :dates=>["2017-04-29", "2016-12-28", "2016-12-20", "2016-11-11", "2016-10-21"]}, "Gregory Santos"=>{:sessionsCount=>4, :totalTime=>"192 min.", :longestSession=>"85 min.", :browsers=>"CHROME 20, CHROME 35, FIREFOX 47, SAFARI 49", :usedIE=>false, :alwaysUsedChrome=>false, :dates=>["2018-09-21", "2018-02-02", "2017-05-22", "2016-11-25"]}}} + @st = 'Chrome 21' + BROWSERS = %w[CHROME INTERNET\ EXPLORER FIREFOX SAFARI].freeze + s = Set.new + i = 0 + + def b_index + BROWSERS.rindex(BROWSERS.find{|v| str.upcase.include? v}) + end + + def version + /(#{browser})\s(\d{1,})/.match[2] + end + + x.report("<<") do + i += 1 + s << i + end + + x.report('add') do + i += 1 + s.add i + end + + x.compare! +end diff --git a/case-study-CPU.md b/case-study-CPU.md new file mode 100644 index 00000000..80148b25 --- /dev/null +++ b/case-study-CPU.md @@ -0,0 +1,203 @@ +# Case-study оптимизации + +## Актуальная проблема +В нашем проекте возникла серьёзная проблема. + +Необходимо было обработать файл с данными, чуть больше ста мегабайт. + +У нас уже была программа на `ruby`, которая умела делать нужную обработку. + +Она успешно работала на файлах размером пару мегабайт, но для большого файла она работала слишком долго, и не было понятно, закончит ли она вообще работу за какое-то разумное время. + +Я решил исправить эту проблему, оптимизировав эту программу. + +## Формирование метрики +Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: Количество итераций в секунду. + +При чтении и парсинга файла data.txt Выходные данные из benchmark-ips + +`2.995k (± 1.5%) i/s` + +## Гарантия корректности работы оптимизированной программы +Программа поставлялась с тестом. +Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. +Для упрощение кода и выделение абстракций я вынес тестирование программы в отдельную директорию `spec` +Тестирование будет заниматься библиотека `rspec` +## Feedback-Loop +Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за *время, которое у вас получилось* + +Вот как я построил `feedback_loop`: + +* Тестирование +* Создание профайла. Поиск точек старта +* Оптимизация кода + +## Вникаем в детали системы, чтобы найти главные точки роста +Для того, чтобы найти "точки роста" для оптимизации я воспользовался библиотеками + +- rbspy +- benchmark +- ruby-prof + +Вот какие проблемы удалось найти и решить + +### Ваша находка №1 +Вынес тест отдельно из программы. Чтобы не мазолил глаза. Не место тестам в теле основной программы. +Добавил возможность менять подключаемый файл с данными и отключение GC. Через аттрибуты метода work. +Для поиска точки роста использовал профилировщики: +* rbspy - не дал результатов. Основная нагрузка была в самом block in work. Метод work грамозкий и является антипатерном GodObject. +Для получения более подробной информации метод надо разбить на простые методы. +* ruby-prof - Указал на высокую нагрузку CPU при чтении и записи данных. А так же при парсинге даты. +* benchmarks/ips (file: data.txt) +`2.995k (± 1.5%) i/s` + +Бросается на глаза чтение всего файла, дробление по строчно и запись строк в массив. +Так как при большом объеме данных забивается память. Решение использовать читать файл с данными по строчно. + +* Использовал метод File#foreach. Чтобы не записывать все данные в память. А проводить все операции по строчно. +Обернул реализацию парсинга данных в блок #foreach + +И всё пошло по бороде. Если начинать с точки старта, требуется для начало провести не хилый рефакт + +Довел код до зеленных тестов. Пока получилось правда с запашком. + +Треды не включал. Всё происходит синхронно. Тесты запускаю в IDE Rubymine, что возможно могут дать не точные результаты. + А они вообще могут быть точными? + +#### Результаты benchmarks/ips на маленьком файле + +`2.111k (± 3.4%) i/s - 10.441k in 5.035906s` + +#### Результат ruby-prof на большом файле +``` +Total: 52.027112 + +14.89 39.910 7.745 0.000 32.166 1 #foreach +10.85 8.168 5.642 0.000 2.525 2750940 User#update +7.90 4.108 4.108 0.000 0.000 3250940 String#split +7.76 8.193 4.037 0.000 4.157 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json +``` + +### Ваша находка №2 +Вынес код чтения файла и формирование отчета для пользователя в отдельный метод + +#### Результаты benchmarks/ips на маленьком файле + +``` +2.929k (± 8.9%) i/s - 7.608k in 25.412108s + with 95.0% confidence +``` +#### Результат ruby-prof на большом файле +``` +Total: 48.899145 + + 15.33 40.670 7.496 0.000 33.174 1 #foreach + 11.68 8.254 5.713 0.000 2.541 2750940 User#update + 8.74 4.275 4.275 0.000 0.000 3250940 String#split + 7.17 3.505 3.505 0.000 0.000 8250940 #instance + 7.06 16.015 3.450 0.000 12.565 500000 Object#make_report +``` + +### Ваша находка №3 +Операции с потоками вода/вывода данных очень тяжелые. Если с записью файлов пока ни чего не сделать. +То на с чтением можно по работать. Как раз на это и указывает профайл от ruby-prof. +Я вынес чтение файла в отдельный метод. Файл так же читается по строчно и заполняет массив строк. +Агрегирование данных будет происходить из данного массива. + +#### benchmarks/ips Дал не значительный прирост c маленьким файлом. + +#### Результат ruby-prof на большом файле +А тут уже интересно) +``` +Total: 36.541374 +Sort by: self_time + + %self total self wait child calls name location + 13.75 28.591 5.026 0.000 23.565 1 Array#reject! + 11.51 5.818 4.206 0.000 1.612 2750940 User#update /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:11 + 8.84 3.229 3.229 0.000 0.000 3250940 String#split + 8.44 5.849 3.085 0.000 2.764 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 7.31 11.575 2.671 0.000 8.904 500000 Object#make_report /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:39 + 6.55 2.392 2.392 0.000 0.000 8250940 #instance /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:15 + 5.36 1.957 1.957 0.000 0.000 8126279 String#encode + 3.30 1.205 1.205 0.000 0.000 1 #foreach + 3.01 1.099 1.099 0.000 0.000 2750940 Set#add /usr/share/rvm/ +``` + +Но чтобы память не забивалась. Требуется очищать массив от устаревших данных. +А так же можно будет поиграться с тредами. + +C тредами поялвилась проблема с последовательностью записи данных в отчет. Чтобы не забивать память массивом строк (а после это появились фризы). Решил откатить на время измерения. Буду продолжать отимизацию читаю файл по строчно. + +### Ваша находка №4 +Отчет ruby-prof указал на точку раста создания юзера. +``` +12.91 29.410 5.906 0.000 23.505 3250940 Object#make_user /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:59 + 10.76 4.924 4.924 0.000 0.000 3250940 String#split + 9.58 6.181 4.381 0.000 1.800 2750940 User#update /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:10 + 7.41 37.725 3.391 0.000 34.334 1 #foreach + 7.20 7.423 3.293 0.000 4.130 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json +``` +При агргировании данных формируется излишний класс User после которого идёт агрегация данных. +Решение: +Убрать абстракию User + +Провел очередной рефакт. Убрал абстракцию User. + +###Результаты +На агреггирование большого файала ушло время +Finish in 25.983555996994255 + +В рамки бюджета уложились + +ruby-prof показал такую информацию + +``` + Total: 0.000528 + Sort by: self_time + + %self total self wait child calls name location + 15.18 0.000 0.000 0.000 0.000 18 Object#make_report /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:39 + 11.48 0.000 0.000 0.000 0.000 1 File#initialize + 10.68 0.000 0.000 0.000 0.000 1 IO#close + 8.59 0.000 0.000 0.000 0.000 1 #foreach + 5.49 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 3.88 0.000 0.000 0.000 0.000 18 String#split + 3.81 0.001 0.000 0.000 0.001 1 [global]# ruby-prof-flat.rb:7 + 3.69 0.000 0.000 0.000 0.000 36 Object#user? /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:31 + 2.62 0.001 0.000 0.000 0.000 1 Object#work /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:4 + 2.59 0.000 0.000 0.000 0.000 54 String#encode + 2.20 0.000 0.000 0.000 0.000 10 Array#join + 2.07 0.000 0.000 0.000 0.000 30 Object#browser /home/pavel/Документы/rails-optimization-2-task1/task-1.rb:35 + 1.75 0.000 0.000 0.000 0.000 15 Set#add /usr/share/rvm/rubies/ruby-2.6.3/lib/ruby/2.6.0/set.rb:348 + 1.72 0.000 0.000 0.000 0.000 44 String#upcase +``` +Слишком часто вызывается метод предикат user. Оптимизировал данный процесс. + +Проверил сериализацию данных из хеш в json, (хещ был взять с данных тестового файла) таких гемов: +* to_json +* oj +* multi_json + +``` +Comparison: + oj: 199997.6 i/s + MultiJson: 120658.5 i/s - 1.66x slower + MultiJson pretty: 96294.8 i/s - 2.08x slower + json: 54341.7 i/s - 3.68x slower + +``` + +Oj стал фаворитом. Но сталкнулся с проблемой. Он не переводит символы в строки. (подобная проблема уже есть в issue) +Поставил библиотеку multi_json + +Результат +Finish in 21.9 - 23.8 + +## Результаты +В результате проделанной оптимизации наконец удалось обработать файл с данными за 21-23 секунды. + + + +## Защита от регрессии производительности +Для защиты от потери достигнутого прогресса при дальнейших изменениях программы был добавлен тест агреггирование 100_000 строк данных diff --git a/case-study-RAM.md b/case-study-RAM.md new file mode 100644 index 00000000..17680c3c --- /dev/null +++ b/case-study-RAM.md @@ -0,0 +1,218 @@ +#Case-study оптимизации RAM +Актуальная проблема +После первой оптимизации CPU. Удалось агреггировать данные файла с 100 000 строк за менее 30 секунд. +Но была выявленна следующая проблема. Программа потребялем много оперативной памяти. При файле со 100 000 строк данных затрачивается 1292 Mb RAM. +Я решил исправить эту проблему, оптимизировав эту программу. + +###Цель +Потребление ОЗУ менее 75Mb при 100 000 строк данных. + +###Формирование метрики +Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я буду вычислять потребление оперативной памяти на тестовом файле в 500 строк. +Для понимая того какая будет асимтотика я собрал общее кол-во потребляемого ОЗУ методов на разном кол-ве строк данных + + + + +| Кол-во строк | Byte | Kb | Mb | +| ------------- |:----------:|:---------:|:------:| +| **10** |337856 |329,94 |0,32 | +| **20** |337856 |337,70 |0,33 | +| **30** |354632 |346,32 |0,34 | +| **50** |370176 |361,50 |0,35 | +| **100** |411640 |401,99 |0,39 | +| **500** |738888 |721,57 |0,70 | +| **large** |2564204832 |2504106,28 |2445,42 | + +![diagram](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/task-2-optimaiz-ram/benchmarks/RAM/diagram.jpg) + +Гарантия корректности работы оптимизированной программы +Написан rspec тест. + +###Feedback-Loop + +* Профилирование данных по потребелению памяти. + * Для сбора данных я собрал тестовый файл с данными в 500 строк. + * Чтобы в лезть в бюджет на данный должно потратиться не более 200Кб памяти +* Поиск точки роста +* Оптимизация проблемного кода +* Тестирование профилировщиками результата + +Для того, чтобы найти "точки роста" для оптимизации я воспользовался инструментами: +- ruby-prof - Модуль Memory и ALLOCATIONS +- memory_profile + +Вот какие проблемы удалось найти и решить + +####Ваша находка №1 +* Потребление памяти 720,7 Кб *ruby-prof* +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/task-2-optimaiz-ram/benchmarks/RAM/reports/img/point-1.png) +первая вызвана работай гема MultiJson. Там происходит сериализация данных из хеша в json + +Сплит (при 505 вызовов) плодит множества алокаций из-за этого забивается память почти на 20%. 3432(ruby-prof) - 3922(memory_profile) +Уменьшить кол-во алокаций при сплите данных + +Я вынес статичные данные в константы. Добавил коммент frozen_string_literal. Разбил метод сплит по условиям + +После оптимизации* кода получилось уменьшить кол-во алокаций в общем коде с 15072 до 13595 (memory_profile). +В методе сплит было не существеное изменение 3376(memory_profile) - 3432(ruby-prof) +Уменьшить кол-во вызовов сплит не удалось. + +Общая потребление памяти программы стала 655,125 Кб (- 65,5 Кб) ruby-prof + +####Ваша находка №2 + +Я заметил что сплит формирует лишние данные, которые мне нужны. Я попробую от них избавиться. + +Спустя некоторых манипуляций... + +**как изменился отчёт профилировщика** + +В худшую сторону. Это был фэйл. Данные стали плодиться как хомяки в брачный период. Вернул всё обратно. + +**Попытка 2** + +Обернул в цикл while сбор данных для сессий. + +Получилось снизить общее потребление памяти до 598,91 Кб (ruby-prof) + +Кол-во алокаций снизилось до 1068332 (memory_profile) + +#####Точка роста. +По данным ruby-prof Split спустился на 3 позицию. +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/task-2-optimaiz-ram/benchmarks/RAM/reports/img/point-2.png) + + +memory_profile указывает, что львинная доля памяти уходит на сроки. +Кол-во массивов снизилось с 191640 до 174760 +``` +allocated memory by class +----------------------------------- + 631093 String + 174760 Array + 143904 File + 56920 Hash + +``` + +####Ваша находка №3 +Пора заняться Главной точкой роста. MultiJson + +Вернул я старый добрый to_json. Запустил rspec. Тесты зеленные. Значит за рамки 30 секунд еще не выпал. + +**Кол-во создаваемый алокаций и потребление памяти упало в 2 раза!** + + +``` +Total allocated: 589058 bytes (8071 objects) +Total retained: 117398 bytes (962 objects) +``` + +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/task-2-optimaiz-ram/benchmarks/RAM/reports/img/point-3.png) + +Общее потребление памяти 330.7 Кб. + +####Ваша находка №4 +C помощью stackprof выявил проблемную зону. Создаётся большое кол-во алокаций. Что так же подтверждает ruby-prof. +``` +2954 (36.6%) / 2954 (36.6%) | 47 | cols = line.split(SPLIT) +``` + +Решил по пробовать использовать регекспы не смотря на то, что они медленные. Сами регекспы занес в константу и за фризил. Думал так решу вопрос с созданием лишних алокаций. + +**Результат:** +Юзаем valgrind +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/task-2-optimaiz-ram/benchmarks/RAM/reports/img/point-4.png) +Это фиаско. Откатываемся назад к slip. + +memory-profile +``` +Total allocated: 1.25 MB (12846 objects) +Total retained: 117.40 kB (962 objects) +``` +ruby-prof +``` +Fiber ID: 47238691343540 +Total: 782872.000000 +Sort by: self_time + + %self total self wait child calls name location + 19.41 151920.000 151920.000 0.000 0.000 422 String#scan + 17.25 202560.000 135040.000 0.000 67520.000 1688 Enumerable#find + 10.78 84400.000 84400.000 0.000 0.000 844 Regexp#match + 10.60 82960.000 82960.000 0.000 0.000 2074 Hash#keys +``` + +####Ваша находка №5 + +На этот раз обратил внимание на сохраненные объекты. В этом помог гем memory_profile. +После ряда рефакторинга. Заменил join на строки. Убрал лишние массивы. +Так же основной точкой роста был + +``` +retained objects by location +----------------------------------- + 422 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:68 + + @report[:usersStats][user][:dates] << data.chomp +``` +Bang! методы не всегда являются лучшим результатом. Иногда пладили лишние алокации. Например sort!. Видимо из-за различия входящих данных, данный метод введут себя по разному. + +Манипуляции с датой результата не дало. Но как оказалось @result переполнял память. Возможно GC не очищал в нем данные. Так как данные постоянно мутировали и записывались в данную переменную. Стоило данную переменную передавать аргументом и убрать @ потребление памяти уменьшилось до 25Кб + +memory_profiler +``` +Total allocated: 591.63 kB (8870 objects) +Total retained: 25.19 kB (2 objects) + +Retained String Report +----------------------------------- + 1 "Lazaro Raven" + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:33 + + 1 "{\"totalUsers\":78,\"uniqueBrowsersCount\":172,\"totalSessions\":422,\"allBrowsers\":\"CHROME 1,CHROME 10,CHROME 11,CHROME 12,CHROME 13,CHROME 14,CHROME 16,CHROME 17,CHROME 18,CHROME 2,CHROME 20,CHROME 21,CHRO" + 1 /media/pavel/5404A02704A00DD4/Code/rails-optimization-2-task2/task-2.rb:25 + +``` + +Stackprof +Не густо информации. +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/master/benchmarks/RAM/reports/img/point-5.png) + +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/master/benchmarks/RAM/reports/img/point-6.png) + +Ruby-prof +![point](https://raw.githubusercontent.com/VidgarVii/rails-optimization-2-task2/master/benchmarks/RAM/reports/img/point-7.png) +Результаты +В результате проделанной оптимизации наконец удалось обработать файл с данными. Удалось улучшить метрику системы с 2560Mb , до 959 Mb. + +####Ваша находка №6 + +Протестировав гем Oj, как оказалось он потребляет не много меньше памяти чем json. Но чтобы он корректно работал пришлось все ключи сделать строками. Благо frozen_string_literal не даёт плодить лишние алокации. + +``` +Total allocated: 506.57 kB (6874 objects) +Total retained: 25.19 kB (2 objects) +``` + +####Ваша находка №7 + +Так как дата файл занимает объем памяти больше чем заложанные бюджет. Я решил сохранять пользователей во временный файл. После чего из временного файла по строчно буду забирать данные и переписывать в конечный файл result.txt. + +После всех обновлений memory_profile показал, что для работы тестового файла надо 4Kb rss. +По данным асимптотики я более чем уложился в бюджет. + +Тестовый запуск обработки данных в большом файле показал. Что для него используется только 16 Mb. Отчет команды `ps -o rss= -p #{Process.pid}` + +На этом работу можно заканчивать. + + +##Результаты + +Выявил, что при работе с сортировкой не всегда хорощо работают bang! методы. + +Прежде чем плодить переменные экземпляра класса хорошенько подумать надо ли он или лучше передавать данные атрибутами метода. + +while + (shift, delete ...) можеть быть отличным инструментом при работе с большими данными + +Ночами спать надо, а не кодить. \ No newline at end of file diff --git a/case-study-template.md b/case-study-template.md deleted file mode 100644 index c3279664..00000000 --- a/case-study-template.md +++ /dev/null @@ -1,55 +0,0 @@ -# Case-study оптимизации - -## Актуальная проблема -В нашем проекте возникла серьёзная проблема. - -Необходимо было обработать файл с данными, чуть больше ста мегабайт. - -У нас уже была программа на `ruby`, которая умела делать нужную обработку. - -Она успешно работала на файлах размером пару мегабайт, но для большого файла она работала слишком долго, и не было понятно, закончит ли она вообще работу за какое-то разумное время. - -Я решил исправить эту проблему, оптимизировав эту программу. - -## Формирование метрики -Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: *тут ваша метрика* - -## Гарантия корректности работы оптимизированной программы -Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. - -## Feedback-Loop -Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за *время, которое у вас получилось* - -Вот как я построил `feedback_loop`: *как вы построили feedback_loop* - -## Вникаем в детали системы, чтобы найти главные точки роста -Для того, чтобы найти "точки роста" для оптимизации я воспользовался *инструментами, которыми вы воспользовались* - -Вот какие проблемы удалось найти и решить - -### Ваша находка №1 -- какой отчёт показал главную точку роста -- как вы решили её оптимизировать -- как изменилась метрика -- как изменился отчёт профилировщика - -### Ваша находка №2 -- какой отчёт показал главную точку роста -- как вы решили её оптимизировать -- как изменилась метрика -- как изменился отчёт профилировщика - -### Ваша находка №X -- какой отчёт показал главную точку роста -- как вы решили её оптимизировать -- как изменилась метрика -- как изменился отчёт профилировщика - -## Результаты -В результате проделанной оптимизации наконец удалось обработать файл с данными. -Удалось улучшить метрику системы с *того, что у вас было в начале, до того, что получилось в конце* и уложиться в заданный бюджет. - -*Какими ещё результами можете поделиться* - -## Защита от регрессии производительности -Для защиты от потери достигнутого прогресса при дальнейших изменениях программы *о performance-тестах, которые вы написали* diff --git a/data-100.txt b/data-100.txt new file mode 100644 index 00000000..16b000ec --- /dev/null +++ b/data-100.txt @@ -0,0 +1,100 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +session,2,4,Internet Explorer 17,22,2016-07-10 +session,2,5,Firefox 26,76,2017-02-06 +session,2,6,Chrome 14,88,2017-02-19 +session,2,7,Safari 31,113,2018-04-12 +session,2,8,Chrome 20,72,2016-09-04 +session,2,9,Safari 13,14,2017-07-26 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 +session,4,0,Chrome 11,49,2019-02-05 +session,4,1,Safari 44,18,2017-09-01 +session,4,2,Firefox 32,88,2017-06-01 +session,4,3,Chrome 28,82,2018-03-18 +session,4,4,Firefox 38,36,2018-06-11 +session,4,5,Safari 14,11,2017-04-06 +session,4,6,Safari 27,116,2017-05-30 +session,4,7,Safari 24,36,2018-06-12 +session,4,8,Firefox 3,28,2018-01-05 +user,5,Lou,Lean,39 +session,5,0,Internet Explorer 42,74,2017-08-20 +session,5,1,Internet Explorer 1,80,2018-11-22 +session,5,2,Chrome 18,105,2018-01-17 +user,6,Deedra,Minta,44 +session,6,0,Firefox 32,27,2017-07-07 +session,6,1,Firefox 45,48,2017-07-22 +session,6,2,Safari 33,55,2018-07-09 +session,6,3,Safari 1,14,2016-11-08 +session,6,4,Firefox 39,18,2017-02-06 +session,6,5,Safari 12,52,2016-07-18 +session,6,6,Firefox 18,84,2016-08-16 +session,6,7,Chrome 2,114,2016-10-18 +user,7,Loria,Vernetta,68 +session,7,0,Safari 14,51,2019-01-25 +session,7,1,Internet Explorer 29,88,2016-10-12 +session,7,2,Firefox 32,55,2016-11-15 +session,7,3,Safari 4,20,2016-11-19 +session,7,4,Chrome 42,95,2018-02-10 +session,7,5,Safari 36,88,2018-03-30 +session,7,6,Safari 7,74,2017-05-27 +session,7,7,Safari 18,67,2017-02-22 +session,7,8,Chrome 24,26,2018-11-01 +user,8,Abdul,Venessa,55 +session,8,0,Internet Explorer 1,60,2018-12-02 +session,8,1,Chrome 3,63,2016-10-02 +session,8,2,Safari 41,99,2017-01-12 +session,8,3,Firefox 13,69,2017-04-17 +session,8,4,Safari 31,115,2018-04-08 +session,8,5,Chrome 30,77,2019-01-28 +session,8,6,Safari 43,56,2017-05-07 +user,9,Brooks,Janae,6 +session,9,0,Internet Explorer 36,11,2018-08-11 +user,10,Rey,Coy,95 +session,10,0,Internet Explorer 27,115,2017-08-05 +session,10,1,Internet Explorer 21,119,2018-11-15 +session,10,2,Internet Explorer 2,0,2016-06-10 +session,10,3,Safari 13,44,2018-04-07 +session,10,4,Firefox 37,26,2018-05-04 +user,11,Cyrus,Danyel,41 +session,11,0,Firefox 34,118,2016-10-14 +session,11,1,Internet Explorer 34,45,2017-10-10 +session,11,2,Internet Explorer 38,70,2017-07-10 +user,12,Valentin,Emilio,21 +session,12,0,Chrome 13,28,2018-04-23 +session,12,1,Firefox 35,17,2018-11-29 +session,12,2,Firefox 19,68,2018-05-03 +session,12,3,Internet Explorer 14,2,2016-09-18 +session,12,4,Firefox 15,97,2018-04-15 +session,12,5,Safari 26,40,2016-06-13 +user,13,Mitchell,Hobert,78 +session,13,0,Internet Explorer 32,89,2019-02-07 +session,13,1,Firefox 17,0,2017-11-05 +session,13,2,Chrome 17,117,2018-12-12 +session,13,3,Firefox 28,3,2016-12-01 diff --git a/data-500.txt b/data-500.txt new file mode 100644 index 00000000..92aa26fc --- /dev/null +++ b/data-500.txt @@ -0,0 +1,499 @@ +user,0,Hazel,Margarete,19 +session,0,0,Internet Explorer 50,81,2018-02-01 +session,0,1,Safari 27,88,2017-10-28 +session,0,2,Firefox 13,92,2016-11-02 +session,0,3,Internet Explorer 40,37,2017-05-31 +session,0,4,Internet Explorer 16,37,2017-11-21 +session,0,5,Safari 19,22,2017-11-30 +session,0,6,Chrome 31,74,2016-08-22 +session,0,7,Firefox 46,76,2019-02-04 +user,1,Wilfredo,Louetta,40 +session,1,0,Firefox 38,68,2018-04-24 +session,1,1,Internet Explorer 41,27,2016-09-06 +session,1,2,Internet Explorer 1,74,2017-01-05 +session,1,3,Firefox 47,28,2017-06-09 +session,1,4,Internet Explorer 22,98,2016-11-03 +user,2,Cecil,Rosalba,44 +session,2,0,Safari 26,96,2018-08-20 +session,2,1,Internet Explorer 10,3,2019-01-03 +session,2,2,Internet Explorer 47,52,2016-07-31 +session,2,3,Safari 34,37,2017-09-14 +session,2,4,Internet Explorer 17,22,2016-07-10 +session,2,5,Firefox 26,76,2017-02-06 +session,2,6,Chrome 14,88,2017-02-19 +session,2,7,Safari 31,113,2018-04-12 +session,2,8,Chrome 20,72,2016-09-04 +session,2,9,Safari 13,14,2017-07-26 +user,3,Kieth,Noble,20 +session,3,0,Safari 23,1,2018-02-19 +session,3,1,Internet Explorer 24,92,2018-05-15 +session,3,2,Chrome 6,91,2017-01-06 +session,3,3,Internet Explorer 47,7,2016-09-01 +session,3,4,Firefox 4,20,2017-03-22 +session,3,5,Internet Explorer 23,17,2016-12-02 +session,3,6,Internet Explorer 5,91,2017-12-29 +session,3,7,Internet Explorer 23,2,2017-03-17 +user,4,Corie,Erika,32 +session,4,0,Chrome 11,49,2019-02-05 +session,4,1,Safari 44,18,2017-09-01 +session,4,2,Firefox 32,88,2017-06-01 +session,4,3,Chrome 28,82,2018-03-18 +session,4,4,Firefox 38,36,2018-06-11 +session,4,5,Safari 14,11,2017-04-06 +session,4,6,Safari 27,116,2017-05-30 +session,4,7,Safari 24,36,2018-06-12 +session,4,8,Firefox 3,28,2018-01-05 +user,5,Lou,Lean,39 +session,5,0,Internet Explorer 42,74,2017-08-20 +session,5,1,Internet Explorer 1,80,2018-11-22 +session,5,2,Chrome 18,105,2018-01-17 +user,6,Deedra,Minta,44 +session,6,0,Firefox 32,27,2017-07-07 +session,6,1,Firefox 45,48,2017-07-22 +session,6,2,Safari 33,55,2018-07-09 +session,6,3,Safari 1,14,2016-11-08 +session,6,4,Firefox 39,18,2017-02-06 +session,6,5,Safari 12,52,2016-07-18 +session,6,6,Firefox 18,84,2016-08-16 +session,6,7,Chrome 2,114,2016-10-18 +user,7,Loria,Vernetta,68 +session,7,0,Safari 14,51,2019-01-25 +session,7,1,Internet Explorer 29,88,2016-10-12 +session,7,2,Firefox 32,55,2016-11-15 +session,7,3,Safari 4,20,2016-11-19 +session,7,4,Chrome 42,95,2018-02-10 +session,7,5,Safari 36,88,2018-03-30 +session,7,6,Safari 7,74,2017-05-27 +session,7,7,Safari 18,67,2017-02-22 +session,7,8,Chrome 24,26,2018-11-01 +user,8,Abdul,Venessa,55 +session,8,0,Internet Explorer 1,60,2018-12-02 +session,8,1,Chrome 3,63,2016-10-02 +session,8,2,Safari 41,99,2017-01-12 +session,8,3,Firefox 13,69,2017-04-17 +session,8,4,Safari 31,115,2018-04-08 +session,8,5,Chrome 30,77,2019-01-28 +session,8,6,Safari 43,56,2017-05-07 +user,9,Brooks,Janae,6 +session,9,0,Internet Explorer 36,11,2018-08-11 +user,10,Rey,Coy,95 +session,10,0,Internet Explorer 27,115,2017-08-05 +session,10,1,Internet Explorer 21,119,2018-11-15 +session,10,2,Internet Explorer 2,0,2016-06-10 +session,10,3,Safari 13,44,2018-04-07 +session,10,4,Firefox 37,26,2018-05-04 +user,11,Cyrus,Danyel,41 +session,11,0,Firefox 34,118,2016-10-14 +session,11,1,Internet Explorer 34,45,2017-10-10 +session,11,2,Internet Explorer 38,70,2017-07-10 +user,12,Valentin,Emilio,21 +session,12,0,Chrome 13,28,2018-04-23 +session,12,1,Firefox 35,17,2018-11-29 +session,12,2,Firefox 19,68,2018-05-03 +session,12,3,Internet Explorer 14,2,2016-09-18 +session,12,4,Firefox 15,97,2018-04-15 +session,12,5,Safari 26,40,2016-06-13 +user,13,Mitchell,Hobert,78 +session,13,0,Internet Explorer 32,89,2019-02-07 +session,13,1,Firefox 17,0,2017-11-05 +session,13,2,Chrome 17,117,2018-12-12 +session,13,3,Firefox 28,3,2016-12-01 +session,13,4,Firefox 9,26,2018-08-05 +session,13,5,Safari 27,113,2017-09-02 +session,13,6,Internet Explorer 20,92,2018-08-17 +session,13,7,Safari 11,103,2016-11-11 +session,13,8,Safari 36,26,2018-06-18 +session,13,9,Internet Explorer 22,33,2018-07-15 +user,14,Yuonne,Nicholle,52 +session,14,0,Safari 45,112,2018-01-23 +session,14,1,Firefox 50,54,2017-08-13 +session,14,2,Chrome 21,53,2018-10-08 +session,14,3,Firefox 24,30,2018-12-25 +session,14,4,Chrome 26,117,2017-09-09 +session,14,5,Chrome 16,38,2019-01-29 +session,14,6,Chrome 48,72,2016-08-12 +session,14,7,Safari 23,36,2016-10-05 +session,14,8,Firefox 12,45,2018-05-17 +user,15,Marlene,Ling,76 +session,15,0,Chrome 50,60,2018-06-29 +user,16,Salina,Eddie,27 +session,16,0,Internet Explorer 26,10,2018-01-10 +session,16,1,Chrome 23,13,2017-01-04 +user,17,Ernestine,Clifton,6 +session,17,0,Chrome 13,28,2016-12-05 +session,17,1,Chrome 10,97,2017-11-13 +session,17,2,Safari 34,39,2017-08-24 +session,17,3,Safari 48,27,2018-03-27 +session,17,4,Internet Explorer 32,76,2016-10-22 +session,17,5,Firefox 42,106,2016-12-23 +session,17,6,Chrome 13,72,2018-01-08 +session,17,7,Chrome 24,37,2017-12-21 +user,18,Homer,Odelia,62 +session,18,0,Safari 10,3,2018-01-19 +session,18,1,Internet Explorer 25,81,2017-11-21 +session,18,2,Firefox 4,110,2017-05-17 +session,18,3,Firefox 12,92,2018-01-15 +session,18,4,Safari 43,88,2017-02-04 +session,18,5,Internet Explorer 42,19,2018-06-30 +session,18,6,Firefox 17,47,2016-09-10 +user,19,Jean,Gregg,96 +session,19,0,Internet Explorer 49,12,2016-10-19 +session,19,1,Firefox 36,56,2018-04-20 +session,19,2,Internet Explorer 32,3,2018-01-02 +session,19,3,Internet Explorer 20,85,2018-03-12 +session,19,4,Internet Explorer 21,21,2017-01-10 +session,19,5,Firefox 46,99,2017-08-19 +user,20,Jacinta,Erinn,34 +session,20,0,Chrome 44,49,2018-01-29 +session,20,1,Internet Explorer 33,90,2017-11-02 +session,20,2,Safari 22,44,2018-10-14 +session,20,3,Firefox 39,32,2019-01-07 +user,21,Melita,Mika,45 +session,21,0,Firefox 30,1,2016-08-03 +session,21,1,Safari 48,64,2017-05-10 +session,21,2,Chrome 40,61,2018-10-07 +session,21,3,Safari 37,0,2018-05-09 +session,21,4,Chrome 12,98,2017-02-24 +user,22,Matthew,Lucretia,23 +session,22,0,Internet Explorer 23,86,2017-08-02 +user,23,Maurice,Paz,38 +session,23,0,Internet Explorer 2,51,2017-09-28 +session,23,1,Internet Explorer 11,60,2016-08-02 +session,23,2,Firefox 31,32,2017-04-30 +user,24,Jessica,Brandi,8 +session,24,0,Chrome 12,111,2017-09-18 +user,25,Marget,Ming,58 +session,25,0,Chrome 31,51,2018-05-18 +session,25,1,Safari 9,63,2016-12-20 +session,25,2,Firefox 48,75,2018-03-26 +session,25,3,Firefox 16,51,2017-09-02 +user,26,Audria,Roselyn,85 +session,26,0,Firefox 22,84,2018-02-13 +session,26,1,Safari 14,52,2017-03-17 +session,26,2,Firefox 36,96,2016-11-12 +session,26,3,Firefox 6,16,2017-12-08 +user,27,Leilani,Ines,86 +session,27,0,Firefox 29,91,2016-10-03 +session,27,1,Chrome 44,66,2016-05-27 +session,27,2,Safari 9,90,2017-08-28 +user,28,Philip,Daysi,2 +session,28,0,Internet Explorer 23,27,2018-09-21 +session,28,1,Safari 4,116,2018-09-19 +user,29,Delmar,Otilia,44 +session,29,0,Safari 17,0,2016-08-02 +session,29,1,Internet Explorer 39,101,2017-04-21 +session,29,2,Internet Explorer 8,0,2016-10-19 +session,29,3,Internet Explorer 20,36,2017-02-05 +session,29,4,Internet Explorer 25,73,2018-07-31 +session,29,5,Chrome 18,49,2017-12-14 +session,29,6,Firefox 24,81,2018-09-06 +user,30,Newton,Brianna,34 +session,30,0,Chrome 38,110,2016-11-21 +session,30,1,Firefox 34,47,2017-08-27 +session,30,2,Internet Explorer 27,74,2017-07-13 +session,30,3,Internet Explorer 29,118,2018-03-14 +session,30,4,Chrome 16,24,2017-02-11 +session,30,5,Firefox 37,85,2019-01-26 +session,30,6,Firefox 34,22,2016-10-19 +session,30,7,Firefox 14,14,2018-04-11 +session,30,8,Firefox 27,33,2017-12-07 +user,31,Sherman,Pearly,65 +session,31,0,Firefox 5,113,2016-05-22 +session,31,1,Safari 1,50,2018-08-06 +session,31,2,Internet Explorer 6,29,2016-06-13 +session,31,3,Internet Explorer 48,103,2017-12-15 +session,31,4,Firefox 32,106,2018-07-26 +session,31,5,Safari 27,105,2016-12-08 +session,31,6,Safari 5,44,2016-09-19 +session,31,7,Safari 41,21,2017-02-19 +session,31,8,Firefox 22,66,2017-11-17 +user,32,Steve,Esmeralda,73 +session,32,0,Chrome 41,64,2018-07-13 +session,32,1,Firefox 11,50,2016-12-18 +session,32,2,Firefox 38,90,2018-12-26 +session,32,3,Firefox 41,114,2018-04-01 +session,32,4,Safari 49,22,2018-05-28 +session,32,5,Firefox 12,72,2017-09-12 +user,33,Young,Todd,59 +session,33,0,Chrome 10,59,2016-12-28 +session,33,1,Internet Explorer 28,92,2018-06-14 +session,33,2,Chrome 28,29,2017-04-28 +session,33,3,Firefox 1,52,2018-04-25 +session,33,4,Safari 46,25,2017-09-20 +session,33,5,Safari 32,57,2016-10-07 +user,34,Wen,Sherill,39 +session,34,0,Internet Explorer 18,92,2016-09-05 +session,34,1,Firefox 16,95,2017-08-27 +user,35,Margarita,Aileen,78 +session,35,0,Chrome 9,72,2018-02-27 +session,35,1,Firefox 27,18,2018-05-23 +session,35,2,Firefox 42,113,2016-07-22 +session,35,3,Safari 5,27,2018-09-14 +session,35,4,Chrome 49,17,2018-10-24 +session,35,5,Internet Explorer 17,75,2017-08-27 +session,35,6,Internet Explorer 46,49,2016-09-12 +user,36,Rich,Maddie,58 +session,36,0,Chrome 37,36,2016-08-22 +session,36,1,Chrome 21,81,2016-05-31 +session,36,2,Safari 38,71,2018-10-04 +user,37,Marcie,Modesto,76 +session,37,0,Internet Explorer 37,45,2017-01-06 +session,37,1,Chrome 27,58,2018-04-14 +session,37,2,Safari 43,108,2018-04-05 +session,37,3,Firefox 29,67,2016-12-09 +session,37,4,Firefox 43,90,2016-10-24 +session,37,5,Firefox 24,90,2017-04-30 +session,37,6,Chrome 3,104,2016-12-20 +session,37,7,Firefox 47,106,2017-06-15 +user,38,Amparo,Elvis,71 +session,38,0,Safari 9,74,2017-12-08 +session,38,1,Chrome 50,103,2016-05-30 +session,38,2,Internet Explorer 23,84,2018-06-21 +session,38,3,Chrome 6,67,2018-04-15 +session,38,4,Chrome 26,99,2017-10-19 +session,38,5,Chrome 36,73,2016-11-20 +session,38,6,Chrome 28,1,2018-01-26 +session,38,7,Chrome 38,21,2017-02-26 +user,39,Bailey,Brittanie,58 +session,39,0,Firefox 31,52,2018-12-19 +session,39,1,Safari 12,15,2017-10-16 +session,39,2,Safari 28,14,2016-11-08 +session,39,3,Chrome 50,60,2017-07-02 +user,40,Tawanda,Georgeann,70 +session,40,0,Safari 21,51,2018-05-02 +session,40,1,Firefox 34,85,2017-11-25 +session,40,2,Firefox 31,0,2017-08-11 +session,40,3,Internet Explorer 31,88,2018-01-06 +user,41,Jonnie,Louise,57 +session,41,0,Internet Explorer 16,7,2018-12-07 +session,41,1,Chrome 41,74,2019-02-03 +session,41,2,Safari 11,98,2018-11-28 +session,41,3,Firefox 16,7,2018-03-17 +session,41,4,Chrome 49,99,2018-10-10 +session,41,5,Firefox 46,18,2018-01-04 +session,41,6,Safari 6,54,2017-03-02 +session,41,7,Chrome 2,113,2016-08-18 +session,41,8,Safari 6,54,2019-02-11 +session,41,9,Firefox 46,40,2016-05-22 +user,42,Jamar,Annita,17 +session,42,0,Safari 8,82,2018-04-28 +session,42,1,Chrome 41,82,2016-05-28 +session,42,2,Firefox 47,35,2018-08-09 +user,43,Kurt,Camie,33 +session,43,0,Internet Explorer 16,90,2018-07-22 +session,43,1,Firefox 46,16,2017-07-23 +session,43,2,Safari 47,19,2016-09-26 +user,44,Gail,Morgan,79 +session,44,0,Safari 46,101,2018-10-31 +session,44,1,Firefox 49,42,2017-05-31 +session,44,2,Safari 50,61,2018-10-24 +session,44,3,Chrome 23,89,2016-07-29 +user,45,Trenton,Carlee,6 +session,45,0,Internet Explorer 27,70,2017-06-05 +session,45,1,Chrome 1,36,2017-05-04 +session,45,2,Firefox 5,29,2018-08-30 +session,45,3,Internet Explorer 38,81,2018-08-27 +session,45,4,Chrome 50,21,2017-01-21 +session,45,5,Internet Explorer 5,29,2017-12-14 +session,45,6,Firefox 42,102,2017-05-16 +session,45,7,Chrome 44,101,2017-12-31 +session,45,8,Internet Explorer 45,17,2019-02-08 +user,46,Ailene,Melba,3 +session,46,0,Chrome 8,73,2019-01-27 +session,46,1,Safari 43,6,2016-10-21 +session,46,2,Firefox 35,22,2018-09-01 +session,46,3,Firefox 29,19,2016-09-26 +session,46,4,Firefox 45,118,2017-01-11 +session,46,5,Chrome 38,47,2017-04-18 +session,46,6,Safari 40,100,2016-10-28 +user,47,Mohamed,Lorina,58 +session,47,0,Safari 48,75,2016-08-03 +session,47,1,Internet Explorer 27,18,2018-12-10 +session,47,2,Internet Explorer 39,117,2017-01-30 +session,47,3,Internet Explorer 42,90,2017-02-21 +session,47,4,Safari 47,15,2016-12-24 +session,47,5,Internet Explorer 38,59,2018-09-27 +session,47,6,Safari 6,4,2016-10-13 +user,48,Abbie,Young,83 +session,48,0,Safari 1,46,2017-08-17 +session,48,1,Firefox 8,4,2017-01-15 +session,48,2,Firefox 15,1,2018-09-06 +session,48,3,Chrome 4,46,2018-11-27 +session,48,4,Firefox 11,36,2016-11-29 +session,48,5,Chrome 34,67,2018-08-28 +session,48,6,Internet Explorer 50,27,2016-09-23 +user,49,Coleman,Mardell,78 +session,49,0,Chrome 32,46,2018-08-03 +session,49,1,Firefox 15,73,2018-10-24 +session,49,2,Safari 34,67,2016-07-16 +session,49,3,Safari 39,6,2019-02-04 +session,49,4,Firefox 37,31,2018-08-28 +session,49,5,Firefox 33,103,2016-09-25 +session,49,6,Chrome 12,68,2016-06-15 +user,50,Edwin,Joseph,20 +session,50,0,Safari 37,55,2017-10-04 +session,50,1,Safari 21,111,2018-04-27 +user,51,Sonya,Gay,42 +session,51,0,Chrome 34,107,2017-05-31 +session,51,1,Internet Explorer 32,1,2016-11-07 +session,51,2,Chrome 38,109,2018-07-02 +session,51,3,Internet Explorer 41,86,2017-08-08 +session,51,4,Internet Explorer 32,26,2016-09-17 +session,51,5,Firefox 10,52,2016-05-24 +session,51,6,Safari 5,9,2018-03-19 +session,51,7,Chrome 28,44,2017-01-28 +user,52,Aaron,Debbra,66 +session,52,0,Firefox 10,35,2016-10-24 +session,52,1,Safari 29,16,2016-09-17 +session,52,2,Chrome 27,66,2016-12-27 +session,52,3,Firefox 36,1,2018-06-20 +session,52,4,Internet Explorer 9,25,2017-05-07 +session,52,5,Internet Explorer 31,62,2016-06-19 +session,52,6,Firefox 44,63,2018-06-29 +session,52,7,Safari 11,56,2017-07-25 +user,53,Markus,Shyla,36 +session,53,0,Chrome 48,94,2018-05-24 +session,53,1,Chrome 6,72,2017-07-10 +session,53,2,Safari 1,21,2017-03-20 +session,53,3,Safari 6,107,2017-08-28 +session,53,4,Internet Explorer 17,67,2017-09-28 +session,53,5,Chrome 43,117,2017-10-15 +user,54,Velia,Corrine,63 +session,54,0,Firefox 27,92,2018-03-16 +user,55,Percy,Tarra,30 +session,55,0,Safari 27,14,2017-04-27 +session,55,1,Safari 45,15,2017-02-03 +session,55,2,Chrome 1,40,2016-06-26 +session,55,3,Internet Explorer 27,3,2017-09-12 +session,55,4,Internet Explorer 45,18,2017-09-27 +user,56,Laure,Lee,53 +session,56,0,Chrome 18,89,2018-04-30 +session,56,1,Firefox 23,97,2018-02-28 +session,56,2,Firefox 49,95,2018-05-03 +session,56,3,Firefox 42,84,2017-06-18 +user,57,Claude,Lauren,57 +session,57,0,Internet Explorer 31,20,2018-06-25 +session,57,1,Internet Explorer 29,37,2017-05-04 +session,57,2,Firefox 6,81,2018-06-10 +session,57,3,Internet Explorer 23,53,2018-10-14 +session,57,4,Firefox 15,54,2016-05-24 +session,57,5,Chrome 22,51,2017-02-07 +session,57,6,Chrome 44,0,2018-08-02 +session,57,7,Firefox 17,58,2016-10-02 +session,57,8,Internet Explorer 40,119,2018-07-24 +user,58,Timmy,Monica,41 +session,58,0,Internet Explorer 7,5,2017-05-07 +session,58,1,Firefox 16,82,2018-09-10 +session,58,2,Safari 26,99,2016-08-27 +session,58,3,Firefox 6,119,2018-10-31 +session,58,4,Firefox 29,42,2018-06-13 +session,58,5,Firefox 19,92,2016-08-25 +user,59,Mark,Shasta,95 +session,59,0,Chrome 50,102,2017-05-25 +session,59,1,Safari 39,25,2017-05-31 +session,59,2,Firefox 33,60,2016-06-25 +session,59,3,Safari 12,54,2018-05-09 +session,59,4,Internet Explorer 16,84,2018-10-13 +session,59,5,Chrome 39,27,2018-10-31 +session,59,6,Chrome 38,113,2018-07-05 +session,59,7,Firefox 45,109,2017-06-12 +user,60,Rhona,Alline,14 +session,60,0,Internet Explorer 2,35,2017-10-21 +session,60,1,Chrome 11,61,2016-09-01 +session,60,2,Firefox 13,42,2019-02-11 +session,60,3,Chrome 5,48,2017-02-11 +session,60,4,Safari 24,35,2018-09-05 +session,60,5,Firefox 44,115,2016-06-07 +user,61,Lester,Margaret,34 +session,61,0,Internet Explorer 18,98,2018-08-23 +session,61,1,Chrome 5,86,2018-12-03 +user,62,Renna,Sam,59 +session,62,0,Internet Explorer 27,73,2018-12-14 +session,62,1,Internet Explorer 49,73,2018-11-30 +session,62,2,Internet Explorer 5,113,2016-11-14 +user,63,Jacquline,Marth,98 +session,63,0,Firefox 43,77,2018-12-16 +session,63,1,Safari 18,84,2016-12-11 +user,64,Alia,Mary,74 +session,64,0,Internet Explorer 46,37,2016-11-26 +session,64,1,Safari 15,53,2016-12-06 +session,64,2,Internet Explorer 31,18,2017-01-01 +session,64,3,Safari 43,112,2016-10-05 +session,64,4,Firefox 35,76,2017-03-16 +session,64,5,Chrome 17,61,2018-03-25 +session,64,6,Internet Explorer 37,26,2018-07-31 +session,64,7,Chrome 36,55,2016-12-13 +session,64,8,Safari 4,66,2017-05-27 +user,65,Patricia,Winston,65 +session,65,0,Internet Explorer 35,118,2018-09-29 +session,65,1,Firefox 14,27,2017-05-28 +session,65,2,Chrome 18,15,2017-06-10 +session,65,3,Firefox 26,82,2016-11-23 +session,65,4,Safari 32,114,2016-09-05 +session,65,5,Internet Explorer 17,52,2016-11-05 +session,65,6,Chrome 44,107,2018-03-26 +session,65,7,Firefox 4,42,2017-05-15 +session,65,8,Internet Explorer 50,47,2017-10-13 +user,66,Jerry,Nicolasa,83 +session,66,0,Firefox 20,80,2017-07-23 +user,67,Randal,Pamella,16 +session,67,0,Chrome 37,10,2018-01-07 +session,67,1,Chrome 42,6,2017-01-26 +session,67,2,Firefox 34,14,2018-07-21 +user,68,Olen,Leia,88 +session,68,0,Chrome 35,47,2016-08-04 +session,68,1,Firefox 10,3,2018-09-15 +user,69,Jarod,Terence,28 +session,69,0,Internet Explorer 16,100,2016-08-06 +user,70,Jamie,Jeremy,32 +session,70,0,Internet Explorer 41,102,2018-04-24 +session,70,1,Firefox 33,46,2017-11-19 +session,70,2,Firefox 20,106,2018-06-30 +session,70,3,Safari 43,106,2018-05-03 +session,70,4,Internet Explorer 35,29,2018-03-18 +session,70,5,Chrome 34,20,2018-08-31 +session,70,6,Safari 44,74,2017-03-31 +session,70,7,Firefox 23,78,2017-04-20 +session,70,8,Internet Explorer 14,29,2018-07-14 +session,70,9,Internet Explorer 18,34,2018-08-11 +user,71,Hung,Delfina,63 +session,71,0,Chrome 11,0,2018-12-21 +session,71,1,Chrome 13,73,2018-11-11 +session,71,2,Internet Explorer 39,103,2016-11-29 +session,71,3,Chrome 11,74,2017-08-04 +session,71,4,Safari 35,90,2019-02-09 +session,71,5,Chrome 34,67,2019-02-12 +session,71,6,Chrome 13,68,2018-01-23 +session,71,7,Chrome 24,59,2018-01-27 +user,72,Kenisha,Belle,16 +session,72,0,Internet Explorer 42,72,2018-04-25 +session,72,1,Safari 2,75,2018-04-24 +session,72,2,Chrome 10,24,2016-06-14 +session,72,3,Chrome 40,113,2017-03-18 +session,72,4,Safari 37,13,2016-12-11 +session,72,5,Chrome 44,31,2018-12-19 +session,72,6,Internet Explorer 18,83,2018-03-19 +session,72,7,Chrome 45,4,2016-11-07 +session,72,8,Internet Explorer 22,83,2017-12-08 +session,72,9,Firefox 37,25,2018-09-09 +user,73,Tien,Kenyetta,30 +session,73,0,Firefox 38,99,2017-06-25 +session,73,1,Internet Explorer 41,80,2018-06-18 +session,73,2,Firefox 1,6,2017-08-09 +session,73,3,Firefox 15,69,2016-12-27 +session,73,4,Internet Explorer 42,96,2016-09-28 +user,74,Samantha,Tama,72 +session,74,0,Safari 33,12,2016-06-23 +user,75,Tyler,Santa,21 +session,75,0,Internet Explorer 40,102,2018-07-04 +session,75,1,Firefox 13,5,2016-06-05 +session,75,2,Safari 46,0,2016-09-16 +session,75,3,Firefox 37,107,2018-11-24 +session,75,4,Chrome 3,15,2018-12-29 +user,76,Jerome,Corene,46 +session,76,0,Chrome 23,42,2017-05-03 +session,76,1,Internet Explorer 8,44,2017-07-31 +session,76,2,Safari 1,71,2017-03-08 +session,76,3,Chrome 43,3,2018-03-31 +session,76,4,Chrome 35,22,2017-04-26 +session,76,5,Firefox 37,21,2016-11-01 diff --git a/data_large.txt.gz b/data_large.txt.gz deleted file mode 100644 index 91c7e45e..00000000 Binary files a/data_large.txt.gz and /dev/null differ diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 00000000..dccde758 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,11 @@ +require_relative '../task-2' +require 'rspec-benchmark' + +RSpec.configure do |config| + config.include RSpec::Benchmark::Matchers + config.shared_context_metadata_behavior = :apply_to_host_groups + + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end +end diff --git a/spec/work_spec.rb b/spec/work_spec.rb new file mode 100644 index 00000000..54d41f59 --- /dev/null +++ b/spec/work_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe 'parser small file' do + let(:expected_result) { '{"totalUsers":3,"uniqueBrowsersCount":14,"totalSessions":15,"allBrowsers":"CHROME 13,CHROME 20,CHROME 35,CHROME 6,FIREFOX 12,FIREFOX 32,FIREFOX 47,INTERNET EXPLORER 10,INTERNET EXPLORER 28,INTERNET EXPLORER 35,SAFARI 17,SAFARI 29,SAFARI 39,SAFARI 49","usersStats":{"Leida Cira":{"sessionsCount":6,"totalTime":"455 min.","longestSession":"118 min.","browsers":"FIREFOX 12, INTERNET EXPLORER 28, INTERNET EXPLORER 28, INTERNET EXPLORER 35, SAFARI 29, SAFARI 39","usedIE":true,"alwaysUsedChrome":false,"dates":["2017-09-27","2017-03-28","2017-02-27","2016-10-23","2016-09-15","2016-09-01"]},"Palmer Katrina":{"sessionsCount":5,"totalTime":"218 min.","longestSession":"116 min.","browsers":"CHROME 13, CHROME 6, FIREFOX 32, INTERNET EXPLORER 10, SAFARI 17","usedIE":true,"alwaysUsedChrome":false,"dates":["2017-04-29","2016-12-28","2016-12-20","2016-11-11","2016-10-21"]},"Gregory Santos":{"sessionsCount":4,"totalTime":"192 min.","longestSession":"85 min.","browsers":"CHROME 20, CHROME 35, FIREFOX 47, SAFARI 49","usedIE":false,"alwaysUsedChrome":false,"dates":["2018-09-21","2018-02-02","2017-05-22","2016-11-25"]}}}' + "\n" } + let(:file_result) { File.read('result.json') } + + it 'should write result in to file' do + work('data.txt') + expect(file_result).to eq expected_result + end +end + +describe 'parser large file' do + it 'should perform under 30 s' do + expect{ work('data_large.txt') }.to perform_under(30).sec + end +end diff --git a/task-2.rb b/task-2.rb index 1ffedb7b..f915f794 100644 --- a/task-2.rb +++ b/task-2.rb @@ -1,177 +1,152 @@ -# Deoptimized version of homework task - -require 'json' -require 'pry' -require 'date' -require 'minitest/autorun' - -class User - attr_reader :attributes, :sessions - - def initialize(attributes:, sessions:) - @attributes = attributes - @sessions = sessions - end +# frozen_string_literal: true + +require 'set' +require 'oj' + +USER = 'user' +SPLIT = ',' +MIN = 'min.' +WS = ' ' +COMMA = ', ' +BROWSERS = %w[CHROME INTERNET\ EXPLORER].freeze +TMP_FILE = '.result.tmp' + +def work(file) + File.delete('result.json') if File.exist?('result.json') + + result_file = File.new("result.json", 'a:UTF-8') + tmp_file = File.new(TMP_FILE, 'a:UTF-8') + report = { 'totalUsers' => 0, 'uniqueBrowsersCount' => 0, + 'totalSessions' => 0, 'allBrowsers' => Set.new, 'usersStats' => {} } + + # Скрапим и агрегируем данные + scraping_data_file(file, tmp_file, report) + aggregation_browser_data(report) + + # Если тут не закрыть tmp файл то читать будет не чего. + tmp_file.close + + # Запись в файл + report = "#{Oj.dump(report)}".delete_suffix("}}") + result_file.write(report) + need_name(result_file) + + # Подчищаем за собой мусор + result_file.close + File.delete(TMP_FILE) end -def parse_user(user) - fields = user.split(',') - parsed_result = { - 'id' => fields[1], - 'first_name' => fields[2], - 'last_name' => fields[3], - 'age' => fields[4], - } -end - -def parse_session(session) - fields = session.split(',') - parsed_result = { - 'user_id' => fields[1], - 'session_id' => fields[2], - 'browser' => fields[3], - 'time' => fields[4], - 'date' => fields[5], - } -end +private -def collect_stats_from_users(report, users_objects, &block) - users_objects.each do |user| - user_key = "#{user.attributes['first_name']}" + ' ' + "#{user.attributes['last_name']}" - report['usersStats'][user_key] ||= {} - report['usersStats'][user_key] = report['usersStats'][user_key].merge(block.call(user)) +def need_name(result_file) + File.foreach(TMP_FILE) do |line| + str = line.to_s.delete_suffix("\n") + result_file.write(str) end + + result_file.write("}}\n") end -def work - file_lines = File.read('data.txt').split("\n") +def scraping_data_file(file, tmp_file, report) + last_string = `wc -l #{file}`.split(WS)[0].to_i + current_string = 0 - users = [] - sessions = [] + File.foreach(file) do |line| + current_string += 1 - file_lines.each do |line| - cols = line.split(',') - users = users + [parse_user(line)] if cols[0] == 'user' - sessions = sessions + [parse_session(line)] if cols[0] == 'session' - end + is_user = line.include?(USER) + @user = is_user ? user_name(line) : @user + make_report(line, @user, is_user, report) - # Отчёт в json - # - Сколько всего юзеров + - # - Сколько всего уникальных браузеров + - # - Сколько всего сессий + - # - Перечислить уникальные браузеры в алфавитном порядке через запятую и капсом + - # - # - По каждому пользователю - # - сколько всего сессий + - # - сколько всего времени + - # - самая длинная сессия + - # - браузеры через запятую + - # - Хоть раз использовал IE? + - # - Всегда использовал только Хром? + - # - даты сессий в порядке убывания через запятую + - - report = {} - - report[:totalUsers] = users.count - - # Подсчёт количества уникальных браузеров - uniqueBrowsers = [] - sessions.each do |session| - browser = session['browser'] - uniqueBrowsers += [browser] if uniqueBrowsers.all? { |b| b != browser } + save_interim_report(report, tmp_file, last_string, current_string) end +end - report['uniqueBrowsersCount'] = uniqueBrowsers.count - - report['totalSessions'] = sessions.count - - report['allBrowsers'] = - sessions - .map { |s| s['browser'] } - .map { |b| b.upcase } - .sort - .uniq - .join(',') +def save_interim_report(report, tmp_file, last_string, current_string) + return unless last_string == current_string || report['usersStats'].keys.length > 1 - # Статистика по пользователям - users_objects = [] + # Берем первого пользователя. + # И причесываем его данные для предварительного сохранения во временный файл + user_name = report['usersStats'].keys[0] + prepare_user_report(report, user_name) + user_report = report['usersStats'][user_name] - users.each do |user| - attributes = user - user_sessions = sessions.select { |session| session['user_id'] == user['id'] } - user_object = User.new(attributes: attributes, sessions: user_sessions) - users_objects = users_objects + [user_object] + if last_string == current_string + tmp_file.write("\"#{user_name}\":#{Oj.dump(user_report)}\n") + else + tmp_file.write("\"#{user_name}\":#{Oj.dump(user_report)},\n") end - report['usersStats'] = {} - - # Собираем количество сессий по пользователям - collect_stats_from_users(report, users_objects) do |user| - { 'sessionsCount' => user.sessions.count } - end + # После записи пользователя в файл. Пользователя из хеша report надо удалить + report['usersStats'].tap { |users| users.delete(user_name) } +end - # Собираем количество времени по пользователям - collect_stats_from_users(report, users_objects) do |user| - { 'totalTime' => user.sessions.map {|s| s['time']}.map {|t| t.to_i}.sum.to_s + ' min.' } - end +def user_name(line) + n = line.split(SPLIT) + "#{n[2]} #{n[3]}" +end - # Выбираем самую длинную сессию пользователя - collect_stats_from_users(report, users_objects) do |user| - { 'longestSession' => user.sessions.map {|s| s['time']}.map {|t| t.to_i}.max.to_s + ' min.' } - end +def browser_decoration(browsers) + browsers.sort.join(SPLIT) +end - # Браузеры пользователя через запятую - collect_stats_from_users(report, users_objects) do |user| - { 'browsers' => user.sessions.map {|s| s['browser']}.map {|b| b.upcase}.sort.join(', ') } +def make_report(line, user, is_user = false, report) + if is_user + report['usersStats'][user] = { 'sessionsCount' => 0, + 'totalTime' => 0, + 'longestSession' => 0, + 'browsers' => [], + 'usedIE' => false, + 'alwaysUsedChrome' => true, + 'dates' => ''.dup } + report['totalUsers'] += 1 + else + line.upcase! + cols = line.split(SPLIT) + i = 0 + + while i < 6 + i += 1 + data = cols.shift + + case i + when 4 + report['allBrowsers'] << data + report['usersStats'][user]['alwaysUsedChrome'] = false if !report['usersStats'][user]['alwaysUsedChrome'] || !data.include?(BROWSERS[0]) + report['usersStats'][user]['usedIE'] = true if report['usersStats'][user]['usedIE'] || data.include?(BROWSERS[1]) + report['usersStats'][user]['browsers'] << data + when 5 + report['usersStats'][user]['totalTime'] += data.to_i + report['usersStats'][user]['longestSession'] = data.to_i if report['usersStats'][user]['longestSession'] < data.to_i + when 6 + report['usersStats'][user]['dates'] << " #{data.chomp}" + end + end + + report['totalSessions'] += 1 + report['usersStats'][user]['sessionsCount'] += 1 end +end - # Хоть раз использовал IE? - collect_stats_from_users(report, users_objects) do |user| - { 'usedIE' => user.sessions.map{|s| s['browser']}.any? { |b| b.upcase =~ /INTERNET EXPLORER/ } } - end +def aggregation_browser_data(report) + report['uniqueBrowsersCount'] = report['allBrowsers'].length + report['allBrowsers'] = report['allBrowsers'].sort.join(SPLIT) +end - # Всегда использовал только Chrome? - collect_stats_from_users(report, users_objects) do |user| - { 'alwaysUsedChrome' => user.sessions.map{|s| s['browser']}.all? { |b| b.upcase =~ /CHROME/ } } - end +def prepare_user_report(report, user) + user = report['usersStats'][user] - # Даты сессий через запятую в обратном порядке в формате iso8601 - collect_stats_from_users(report, users_objects) do |user| - { 'dates' => user.sessions.map{|s| s['date']}.map {|d| Date.parse(d)}.sort.reverse.map { |d| d.iso8601 } } - end + user['totalTime'] = "#{user['totalTime']} #{MIN}" + user['browsers'].sort! + user['browsers'] = user['browsers'].join(COMMA) + user['longestSession'] = "#{user['longestSession']} #{MIN}" + user['dates'] = user['dates'].split(WS).sort!.reverse +end - File.write('result.json', "#{report.to_json}\n") - puts "MEMORY USAGE: %d MB" % (`ps -o rss= -p #{Process.pid}`.to_i / 1024) +def print_memory_usage + "%d MB" % (`ps -o rss= -p #{Process.pid}`.to_i / 1024) end -class TestMe < Minitest::Test - def setup - File.write('result.json', '') - File.write('data.txt', -'user,0,Leida,Cira,0 -session,0,0,Safari 29,87,2016-10-23 -session,0,1,Firefox 12,118,2017-02-27 -session,0,2,Internet Explorer 28,31,2017-03-28 -session,0,3,Internet Explorer 28,109,2016-09-15 -session,0,4,Safari 39,104,2017-09-27 -session,0,5,Internet Explorer 35,6,2016-09-01 -user,1,Palmer,Katrina,65 -session,1,0,Safari 17,12,2016-10-21 -session,1,1,Firefox 32,3,2016-12-20 -session,1,2,Chrome 6,59,2016-11-11 -session,1,3,Internet Explorer 10,28,2017-04-29 -session,1,4,Chrome 13,116,2016-12-28 -user,2,Gregory,Santos,86 -session,2,0,Chrome 35,6,2018-09-21 -session,2,1,Safari 49,85,2017-05-22 -session,2,2,Firefox 47,17,2018-02-02 -session,2,3,Chrome 20,84,2016-11-25 -') - end +# work('data_large.txt') - def test_result - work - expected_result = '{"totalUsers":3,"uniqueBrowsersCount":14,"totalSessions":15,"allBrowsers":"CHROME 13,CHROME 20,CHROME 35,CHROME 6,FIREFOX 12,FIREFOX 32,FIREFOX 47,INTERNET EXPLORER 10,INTERNET EXPLORER 28,INTERNET EXPLORER 35,SAFARI 17,SAFARI 29,SAFARI 39,SAFARI 49","usersStats":{"Leida Cira":{"sessionsCount":6,"totalTime":"455 min.","longestSession":"118 min.","browsers":"FIREFOX 12, INTERNET EXPLORER 28, INTERNET EXPLORER 28, INTERNET EXPLORER 35, SAFARI 29, SAFARI 39","usedIE":true,"alwaysUsedChrome":false,"dates":["2017-09-27","2017-03-28","2017-02-27","2016-10-23","2016-09-15","2016-09-01"]},"Palmer Katrina":{"sessionsCount":5,"totalTime":"218 min.","longestSession":"116 min.","browsers":"CHROME 13, CHROME 6, FIREFOX 32, INTERNET EXPLORER 10, SAFARI 17","usedIE":true,"alwaysUsedChrome":false,"dates":["2017-04-29","2016-12-28","2016-12-20","2016-11-11","2016-10-21"]},"Gregory Santos":{"sessionsCount":4,"totalTime":"192 min.","longestSession":"85 min.","browsers":"CHROME 20, CHROME 35, FIREFOX 47, SAFARI 49","usedIE":false,"alwaysUsedChrome":false,"dates":["2018-09-21","2018-02-02","2017-05-22","2016-11-25"]}}}' + "\n" - assert_equal expected_result, File.read('result.json') - end -end +p print_memory_usage # 16 MB =)) \ No newline at end of file