diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..5ac46bfa --- /dev/null +++ b/Gemfile @@ -0,0 +1,16 @@ +source 'https://rubygems.org' + +# ruby-prof +gem 'ruby-prof' +# json +gem 'json' +# pry +gem 'pry' +# date +gem 'date' +# minitest +gem 'minitest' +# rspec-benchmark +gem 'rspec-benchmark' +# rspec +gem 'rspec' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..1408cd22 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,50 @@ +GEM + remote: https://rubygems.org/ + specs: + benchmark-malloc (0.2.0) + benchmark-perf (0.6.0) + benchmark-trend (0.4.0) + coderay (1.1.3) + date (3.3.4) + diff-lcs (1.5.1) + json (2.7.2) + method_source (1.1.0) + minitest (5.22.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-benchmark (0.6.0) + benchmark-malloc (~> 0.2) + benchmark-perf (~> 0.6) + benchmark-trend (~> 0.4) + rspec (>= 3.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + ruby-prof (1.7.0) + +PLATFORMS + arm64-darwin-23 + ruby + +DEPENDENCIES + date + json + minitest + pry + rspec + rspec-benchmark + ruby-prof + +BUNDLED WITH + 2.5.9 diff --git a/benchmark.rb b/benchmark.rb new file mode 100644 index 00000000..1e83dd1b --- /dev/null +++ b/benchmark.rb @@ -0,0 +1,24 @@ +require 'rspec-benchmark' +require_relative 'task-1' + +RSpec.configure do |config| + config.include RSpec::Benchmark::Matchers +end + +describe 'Task' do + describe 'execute less 30 sec' do + let(:file) { 'data_large.txt' } + + it 'success' do + expect { work(File.read(file)) }.to perform_under(30).sec.sample(3).times + end + end + + describe 'linear work' do + it 'success' do + expect do + |n, _i| work(`head -n #{n.to_i} data_large.txt`) + end.to perform_linear.in_range(100, 3_000_000) + end + end +end diff --git a/case-study.md b/case-study.md new file mode 100644 index 00000000..4ff4219c --- /dev/null +++ b/case-study.md @@ -0,0 +1,97 @@ +# Case-study оптимизации + +## Актуальная проблема +В нашем проекте возникла серьёзная проблема. + +Необходимо было обработать файл с данными, чуть больше ста мегабайт. + +У нас уже была программа на `ruby`, которая умела делать нужную обработку. + +Она успешно работала на файлах размером пару мегабайт, но для большого файла она работала слишком долго, и не было понятно, закончит ли она вообще работу за какое-то разумное время. + +Я решил исправить эту проблему, оптимизировав эту программу. + +## Формирование метрики +Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую линейную метрику, чтобы программа отрабатывала за линейное время выполнения в зависимости от размера входных данных. + +## Гарантия корректности работы оптимизированной программы +Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. + +## Feedback-Loop +Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за 0.84551 сек. + +Вот как я построил `feedback_loop`: взял из большого файла первые 1000 строк +head -n 1000 data_large.txt > data1000.txt +отработало за 0.018932 сек. + +Затем взял первые 10000 строк - отработала за 0.84551 сек. +Взял первые 20000 строк - отработала за 3.424572 +Взял первые 30000 строк - отработала за 7.557747 +Взял первые 100000 строк - не дождался, но было точно 100+ сек. + +Таким образом, остановился на 10000 строках и заодно проанаизировал зависимость, котороая являлась степенной или экспоненциальной, как можно было увидеть из примеров выше. + +## Вникаем в детали системы, чтобы найти главные точки роста + +Сначала написал тест на производительность, в файле benchmark.rb. По мере исправлений я менял входные данные для метода work, чтобы не выходить за рамки 30 сек, т.е. сначала улучшил для 100000 строк время отработки, чтобы отрабатывало меньше чем за 30 сек, , зачем для 500000, и т.д. А так же написал тест который проверяет линейную зависимость, в начале, конечно же, который провалился, тем самым подтвердив не линейную зависимость, которая была выявлена еще при построении Feedback-Loop, сообщения теста были следующие +- expected block to perform linear, but performed exponential +- expected block to perform linear, but performed logarithmic +- expected block to perform linear, but performed power +Любые, но не линейная + +Для того, чтобы найти "точки роста" для оптимизации я несколькими воспользовался инструментами, которые были представлены в первой недели лекции. Это FlatPrinter, GraphHtmlPrinter, и самый информативный, на мой взгляд, это CallTreePrinter, так как по построенному дереву можно сразу увидеть не только метод, который дольше всего отрабатывает, но и все дочерние методы в виде дерева в процентах, сколько каждый из них потребляет. Сначала достаточно было более простых профилировщиков - FlatPrinter, GraphHtmlPrinter, но ближе к концу более информативным и более наглядным оказался CallTreePrinter! + +Вот какие проблемы удалось найти и решить + +### Находка №1 +- Flat сразу указал на главную точку роста. Это был метод select, который занимал 62% времени выполнения +- Заменил метод select методом group_by, разбив все сессии пользователей за один проход +- Для 10000 строк стало отрабатывать за 0.196914 сек. - было 0.84551 сек. -> в 4+ раза быстрее +- Отчет профилировщика изменился, исправленная проблема перестала быть главной точкой роста + +### Находка №2 +- Опять же с помощью Flat увидел, что следующей точкой роста стал метод all?, котоый использовался при вычислении уникальных браузеров, вложенная цикличность +- Заменил эту вложенную цикличность each + all? на одиночный проход map и выборкой всех уникальных значений +- Для 10000 строк стало отрабатывать за 0.001084 сек. - было 0.196914 сек. -> в 180 раз? Вышел сильный прирост для небольшого объема данных +- Отчет профилировщика изменился, исправленная проблема перестала быть главной точкой роста + +Так как для 10000 отрабатывает теперь очень быстро, изменил и увеличил Feedback-Loop, теперь стало отрабатывать для 100000 строк за 4.852382 сек, остановился на этом. + +### Находка №3 +- Тем же Flat профилировщиком увидел, что следующей тяжелой операцией является сложение массивов, т.е. метод "+", который вызывается при первом же each, где в массив собираются сессии и пользователи +- Заменил сложение методом "<<", тем самым не создавая каждый раз новый массив из двых старых, а используя одни и те же массивы, дополняя их значениями +- Для 100000 строк стало отрабатывать за 0.960417 сек. - было 4.852382 сек. -> в 5 раз быстрее +- Отчет профилировщика изменился, исправленная проблема перестала быть главной точкой роста + +Снова изменил и увеличил Feedback-Loop, теперь стало отрабатывать для 500000 строк за 10.932996 сек. + +### Находка №4 +- Flat профилировщиком показал, что следующая точка роста - это each. Для более понятной картины воспользовался CallTreePrinter, так как в древовидной структуре вызовов можно увидеть последовательность и понятное процентное соотношение затрат ресурсов конкретных методов. В метододе each вызываются map, однако их много, но из дерева видно, что трудозатратным в них является парсинг даты(Date.parse) +- Заменил Date.parse на Date.strptime, так как при парсе даты .strptime является более оптимальным методом +- Для 500000 строк стало отрабатывать за 9.19779 сек. - было 10.932996 сек. -> в 1.2 раз быстрее +- Отчет профилировщика изменился, исправленная проблема перестала быть главной точкой роста + +### Находка №5 +- Стал пользоваться связкой Flat + CallTreePrinter. Снова точка роста - это each, в котором складываются массивы(подобная проблема как из шага 3), такое место только одно в коде, где создаются объекты класса User +- Решение такое же, как в шаге 3, заменил сложение методом "<<" +- Для 500000 строк стало отрабатывать за 3.572815 сек. - было 9.19779 сек. -> стало в 2.5 раза быстрее +- Отчет профилировщика изменился, исправленная проблема перестала быть главной точкой роста + +### Находка №6 +- Flat + CallTreePrinter. Видно, что огромный процент выполнения занимает итератор each, значит ищем места, где можно их сократить и оптимизировать проход циклов +- Объединил в один each логику сбора статистики по пользователям. Так как каждый раз для вычисления новой статистики проходим вновь по тем же пользователям, когда можно сделать все за раз +- Для 500000 строк стало отрабатывать за 3.154631 сек. - было 3.572815 сек. -> стало чуть быстрее +- Отчет профилировщика фактически не изменился, исправленная проблема не перестала быть главной точкой роста + +В целом, файл data_large.txt теперь обрабатывается за нужное нам время, около 30 сек. Но выполнил еще один шаг, попробовал улучшить результат +### Находка №7 +- Flat + CallTreePrinter и немного GraphHtml. Точка роста - это по прежнему each, но лучше оптимизировать его, к сожалению, больше не вышло, да и сильно картину профилировщика это не поменяло, но если посмотреть по дереву ниже, то видно, что следующими по затратности идут Class::Date>#strptime, затем String#split, которые заменить так же не вышло, и после чего map'ы, которые вызываются из each, и они занимают некоторый процент выполнения. +- Поправил места, где используются map'ы, поскольку они были написаны не оптимально, и там где можно было бы вызвать всего один раз и выполнить какую - либо операцию над данными за одну итерацию, вызывалось два, из - за чего появлялись лишние итерации. Где - то были лишними, например в случае использования any?, где в блоке сразу можно, извлекая необходимые данные, матчить с нужной строкой +- Для тех же 500000 строк стало отрабатывать за 2.760178 сек. - было 3.154631 сек. -> стало отрабатывать еще чуть быстрее +- Отчет профилировщика так же не изменился, исправленная проблема не перестала быть главной точкой роста + +Конечный результат времени обработки файла data_large.txt получился - 24.783419 сек. + +Тест benchmark.rb проходит успешно, среднее время трех запусков программ с data_large.txt получается меньше 30 сек, а так же проверка на линейность perform_linear - выполняется + +Если оптимизировать далее, то скорее придется переписывать программу, стараясь уменьшать кол - во итераций в программе. \ No newline at end of file diff --git a/profilling.rb b/profilling.rb new file mode 100644 index 00000000..798240f0 --- /dev/null +++ b/profilling.rb @@ -0,0 +1,20 @@ +# Deoptimized version of homework task + +require 'ruby-prof' +require_relative 'task-1' + +RubyProf.measure_mode = RubyProf::WALL_TIME +GC.disable + +result = RubyProf.profile do + work +end + +printer = RubyProf::FlatPrinter.new(result) +printer.print(File.open('reports/flat/flat10000_8.txt', 'w+')) +printer = RubyProf::GraphHtmlPrinter.new(result) +printer.print(File.open('reports/graph/graph10000_8.html', 'w+')) +# printer = RubyProf::CallStackPrinter.new(result) +# printer.print(File.open('reports/callstack10000_1.html', 'w+')) +printer = RubyProf::CallTreePrinter.new(result) +printer.print(path: 'reports/callgrind', profile: 'callgrind') diff --git a/reports/callgrind/callgrind.out.44225 b/reports/callgrind/callgrind.out.44225 new file mode 100644 index 00000000..edba033d --- /dev/null +++ b/reports/callgrind/callgrind.out.44225 @@ -0,0 +1,426 @@ +events: wall_time + +fl= +fn=IO::write^ +0 1968 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 0 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 1925 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 0 + +fl= +fn=Date::iso8601 +0 1652 + +fl= +fn=Array::reverse +0 173 + +fl= +fn=Date::<=> +0 1247 + +fl= +fn=Integer::div +0 513 + +fl= +fn=String::[]= +0 936 + +fl= +fn=MatchData::end +0 703 + +fl= +fn=MatchData::begin +0 2154 + +fl= +fn=Regexp::match +0 3688 + +fl= +fn=String::gsub! +0 3526 + +fl= +fn=Date::parse^ +0 11422 +cfl= +cfn=String::gsub! +calls=8464 0 +0 3526 +cfl= +cfn=Regexp::match +calls=16928 0 +0 3688 +cfl= +cfn=MatchData::begin +calls=8464 0 +0 2154 +cfl= +cfn=MatchData::end +calls=8464 0 +0 703 +cfl= +cfn=String::[]= +calls=8464 0 +0 936 +cfl= +cfn=Integer::div +calls=8464 0 +0 513 + +fl= +fn=Array::all? +0 556 +cfl= +cfn=String::upcase +calls=1979 132 +132 183 +cfl= +cfn=String::=~ +calls=1979 132 +132 350 + +fl= +fn=String::=~ +0 1076 + +fl= +fn=Array::any? +0 1036 +cfl= +cfn=String::upcase +calls=4492 127 +127 390 +cfl= +cfn=String::=~ +calls=4492 127 +127 725 + +fl= +fn=Array::max +0 146 + +fl= +fn=Integer::to_s +0 297 + +fl= +fn=Array::sum +0 154 + +fl= +fn=String::to_i +0 1324 + +fl= +fn=Hash::merge +0 2066 + +fl= +fn=User::sessions +0 765 + +fl= +fn=String::+ +0 2597 + +fl= +fn=User::attributes +0 1510 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 6 +cfl= +cfn=Array::each +calls=7 39 +39 75037 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 272 + +fl= +fn=Class::new +0 448 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=1536 0 +0 272 + +fl= +fn=Hash::[] +0 3406 + +fl= +fn=Enumerable::group_by +0 2 +cfl= +cfn=Array::each +calls=1 0 +0 2234 + +fl= +fn=Array::join +0 491 + +fl= +fn=Array::sort +0 2776 +cfl= +cfn=Date::<=> +calls=17169 0 +0 1247 + +fl= +fn=String::upcase +0 2191 + +fl= +fn=Array::uniq +0 2036 + +fl= +fn=Array::map +0 15964 +cfl= +cfn=String::upcase +calls=16928 87 +87 1618 +cfl= +cfn=String::to_i +calls=16928 112 +112 1324 +cfl= +cfn=Date::parse^ +calls=8464 137 +137 22942 +cfl= +cfn=Date::iso8601 +calls=8464 137 +137 1652 + +fl= +fn=Hash::[]= +0 1667 + +fl= +fn=Array::count +0 140 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 6450 +cfl= +cfn=String::split +calls=8464 28 +28 4774 +cfl= +cfn=Array::[] +calls=42320 30 +30 2667 + +fl= +fn=Array::+ +0 70832 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 1169 +cfl= +cfn=String::split +calls=1536 18 +18 641 +cfl= +cfn=Array::[] +calls=6144 20 +20 409 + +fl= +fn=String::== +0 1587 + +fl= +fn=Array::[] +0 4437 + +fl= +fn=Array::each +0 28917 +cfl= +cfn=String::split +calls=10000 53 +53 5630 +cfl= +cfn=Array::[] +calls=20000 54 +54 1360 +cfl= +cfn=String::== +calls=20000 54 +54 1587 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=1536 54 +54 2220 +cfl= +cfn=Array::+ +calls=11536 54 +54 70832 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=8464 55 +55 13891 +cfl= +cfn=Hash::[] +calls=23040 99 +99 3406 +cfl= +cfn=Class::new +calls=1536 99 +99 720 +cfl= +cfn=User::attributes +calls=21504 40 +40 1510 +cfl= +cfn=String::+ +calls=24576 40 +40 2597 +cfl= +cfn=Hash::[]= +calls=12288 41 +41 1667 +cfl= +cfn=User::sessions +calls=10752 107 +107 765 +cfl= +cfn=Array::count +calls=1536 107 +107 129 +cfl= +cfn=Hash::merge +calls=10752 107 +107 2066 +cfl= +cfn=Array::map +calls=16896 112 +112 39288 +cfl= +cfn=Array::sum +calls=1536 112 +112 154 +cfl= +cfn=Integer::to_s +calls=3072 112 +112 297 +cfl= +cfn=Array::max +calls=1536 117 +117 146 +cfl= +cfn=Array::sort +calls=3072 122 +122 3258 +cfl= +cfn=Array::join +calls=1536 122 +122 481 +cfl= +cfn=Array::any? +calls=1536 127 +127 2152 +cfl= +cfn=Array::all? +calls=1536 132 +132 1089 +cfl= +cfn=Array::reverse +calls=1536 137 +137 173 + +fl= +fn=String::split +0 11626 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 110 +cfl= +cfn=String::split +calls=1 47 +47 582 +cfl= +cfn=Array::each +calls=2 52 +52 107065 +cfl= +cfn=Array::count +calls=3 75 +75 10 +cfl= +cfn=Hash::[]= +calls=1 75 +75 1 +cfl= +cfn=Array::map +calls=3 78 +78 4211 +cfl= +cfn=Array::uniq +calls=2 78 +78 2036 +cfl= +cfn=Array::sort +calls=1 84 +84 765 +cfl= +cfn=Array::join +calls=1 84 +84 10 +cfl= +cfn=Enumerable::group_by +calls=1 95 +95 2236 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 106 +106 75042 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 140 +140 1925 +cfl= +cfn=IO::write^ +calls=1 140 +140 1968 + +fl= +fn=IO::read^ +0 1471 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 8 +cfl= +cfn=IO::read^ +calls=1 10 +10 1471 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 195962 + diff --git a/reports/callgrind/callgrind.out.4851 b/reports/callgrind/callgrind.out.4851 new file mode 100644 index 00000000..8520d43f --- /dev/null +++ b/reports/callgrind/callgrind.out.4851 @@ -0,0 +1,438 @@ +events: wall_time + +fl= +fn=IO::write^ +0 2659 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 1 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 1844 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 1 + +fl= +fn=Date::iso8601 +0 1843 + +fl= +fn=Array::reverse +0 167 + +fl= +fn=Date::<=> +0 1338 + +fl= +fn=Integer::div +0 565 + +fl= +fn=String::[]= +0 933 + +fl= +fn=MatchData::end +0 636 + +fl= +fn=MatchData::begin +0 2153 + +fl= +fn=Regexp::match +0 3689 + +fl= +fn=String::gsub! +0 3498 + +fl= +fn=Date::parse^ +0 11321 +cfl= +cfn=String::gsub! +calls=8464 0 +0 3498 +cfl= +cfn=Regexp::match +calls=16928 0 +0 3689 +cfl= +cfn=MatchData::begin +calls=8464 0 +0 2153 +cfl= +cfn=MatchData::end +calls=8464 0 +0 636 +cfl= +cfn=String::[]= +calls=8464 0 +0 933 +cfl= +cfn=Integer::div +calls=8464 0 +0 565 + +fl= +fn=String::=~ +0 1092 + +fl= +fn=Array::any? +0 1083 +cfl= +cfn=String::upcase +calls=4492 131 +131 402 +cfl= +cfn=String::=~ +calls=4492 131 +131 760 + +fl= +fn=Array::max +0 149 + +fl= +fn=Integer::to_s +0 319 + +fl= +fn=Array::sum +0 144 + +fl= +fn=String::to_i +0 1303 + +fl= +fn=Hash::merge +0 1914 + +fl= +fn=User::sessions +0 816 + +fl= +fn=String::+ +0 2584 + +fl= +fn=User::attributes +0 1418 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 10 +cfl= +cfn=Array::each +calls=7 39 +39 72977 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 268 + +fl= +fn=Class::new +0 436 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=1536 0 +0 268 + +fl= +fn=Hash::[] +0 2988 + +fl= +fn=Enumerable::group_by +0 4 +cfl= +cfn=Array::each +calls=1 0 +0 1797 + +fl= +fn=Array::join +0 458 + +fl= +fn=Array::uniq +0 252 + +fl= +fn=Array::sort +0 2722 +cfl= +cfn=Date::<=> +calls=17169 0 +0 1338 + +fl= +fn=String::upcase +0 2087 + +fl= +fn=Array::map +0 14692 +cfl= +cfn=String::upcase +calls=16928 91 +91 1515 +cfl= +cfn=String::to_i +calls=16928 116 +116 1303 +cfl= +cfn=Date::parse^ +calls=8464 141 +141 22795 +cfl= +cfn=Date::iso8601 +calls=8464 141 +141 1843 + +fl= +fn=BasicObject::!= +0 112714 +cfl= +cfn=String::== +calls=841276 0 +0 60571 + +fl= +fn=Array::all? +0 116707 +cfl= +cfn=BasicObject::!= +calls=841276 81 +81 173285 +cfl= +cfn=String::upcase +calls=1979 136 +136 170 +cfl= +cfn=String::=~ +calls=1979 136 +136 331 + +fl= +fn=Hash::[]= +0 1608 + +fl= +fn=Array::count +0 114 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 6572 +cfl= +cfn=String::split +calls=8464 28 +28 4218 +cfl= +cfn=Array::[] +calls=42320 30 +30 2599 + +fl= +fn=Array::+ +0 67194 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 1089 +cfl= +cfn=String::split +calls=1536 18 +18 584 +cfl= +cfn=Array::[] +calls=6144 20 +20 382 + +fl= +fn=String::== +0 62212 + +fl= +fn=Array::[] +0 4266 + +fl= +fn=Array::each +0 30252 +cfl= +cfn=String::split +calls=10000 53 +53 5049 +cfl= +cfn=Array::[] +calls=20000 54 +54 1285 +cfl= +cfn=String::== +calls=20000 54 +54 1641 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=1536 54 +54 2055 +cfl= +cfn=Array::+ +calls=11736 54 +54 67194 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=8464 55 +55 13389 +cfl= +cfn=Array::all? +calls=10000 81 +81 290493 +cfl= +cfn=Hash::[] +calls=23040 103 +103 2988 +cfl= +cfn=Class::new +calls=1536 103 +103 704 +cfl= +cfn=User::attributes +calls=21504 40 +40 1418 +cfl= +cfn=String::+ +calls=24576 40 +40 2584 +cfl= +cfn=Hash::[]= +calls=12288 41 +41 1607 +cfl= +cfn=User::sessions +calls=10752 111 +111 816 +cfl= +cfn=Array::count +calls=1536 111 +111 112 +cfl= +cfn=Hash::merge +calls=10752 111 +111 1914 +cfl= +cfn=Array::map +calls=16896 116 +116 38823 +cfl= +cfn=Array::sum +calls=1536 116 +116 144 +cfl= +cfn=Integer::to_s +calls=3072 116 +116 319 +cfl= +cfn=Array::max +calls=1536 121 +121 149 +cfl= +cfn=Array::sort +calls=3072 126 +126 3269 +cfl= +cfn=Array::join +calls=1536 126 +126 451 +cfl= +cfn=Array::any? +calls=1536 131 +131 2245 +cfl= +cfn=Array::reverse +calls=1536 141 +141 167 + +fl= +fn=String::split +0 10416 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 130 +cfl= +cfn=String::split +calls=1 47 +47 565 +cfl= +cfn=Array::each +calls=3 52 +52 394293 +cfl= +cfn=Array::count +calls=3 75 +75 3 +cfl= +cfn=Hash::[]= +calls=1 75 +75 1 +cfl= +cfn=Array::map +calls=2 88 +88 3325 +cfl= +cfn=Array::sort +calls=1 88 +88 791 +cfl= +cfn=Array::uniq +calls=1 88 +88 252 +cfl= +cfn=Array::join +calls=1 88 +88 7 +cfl= +cfn=Enumerable::group_by +calls=1 99 +99 1801 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 110 +110 72988 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 144 +144 1845 +cfl= +cfn=IO::write^ +calls=1 144 +144 2659 + +fl= +fn=IO::read^ +0 872 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 13 +cfl= +cfn=IO::read^ +calls=1 10 +10 872 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 478661 + diff --git a/reports/callgrind/callgrind.out.56978 b/reports/callgrind/callgrind.out.56978 new file mode 100644 index 00000000..5b528886 --- /dev/null +++ b/reports/callgrind/callgrind.out.56978 @@ -0,0 +1,386 @@ +events: wall_time + +fl= +fn=IO::write^ +0 52743 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 0 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 988967 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 0 + +fl= +fn=Hash::merge +0 1520707 + +fl= +fn=Date::iso8601 +0 541564 + +fl= +fn=Array::reverse +0 303476 + +fl= +fn=Date::<=> +0 401564 + +fl= +fn=Integer::div +0 178886 + +fl= +fn=Date::strptime^ +0 9337795 +cfl= +cfn=Integer::div +calls=2750940 0 +0 178886 + +fl= +fn=Array::all? +0 164236 +cfl= +cfn=String::upcase +calls=643788 117 +117 56711 +cfl= +cfn=String::=~ +calls=643788 117 +117 118369 + +fl= +fn=String::=~ +0 376358 + +fl= +fn=Array::any? +0 317101 +cfl= +cfn=String::upcase +calls=1431949 116 +116 132450 +cfl= +cfn=String::=~ +calls=1431949 116 +116 257988 + +fl= +fn=Array::max +0 45209 + +fl= +fn=Integer::to_s +0 101818 + +fl= +fn=Array::sum +0 47934 + +fl= +fn=String::to_i +0 427062 + +fl= +fn=User::sessions +0 250178 + +fl= +fn=String::+ +0 228964 + +fl= +fn=User::attributes +0 76434 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 18 +cfl= +cfn=Array::each +calls=1 39 +39 29547963 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 81875 + +fl= +fn=Class::new +0 613497 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=500000 0 +0 81875 + +fl= +fn=Hash::[] +0 510506 + +fl= +fn=Enumerable::group_by +0 6 +cfl= +cfn=Array::each +calls=1 0 +0 956153 + +fl= +fn=Array::join +0 868059 + +fl= +fn=Array::sort +0 2172588 +cfl= +cfn=Date::<=> +calls=5568523 0 +0 401564 + +fl= +fn=String::upcase +0 1364307 + +fl= +fn=Array::uniq +0 1040496 + +fl= +fn=Array::map +0 8127223 +cfl= +cfn=String::upcase +calls=5501880 88 +88 1175147 +cfl= +cfn=String::to_i +calls=5501880 113 +113 427062 +cfl= +cfn=Date::strptime^ +calls=2750940 118 +118 9516681 +cfl= +cfn=Date::iso8601 +calls=2750940 118 +118 541564 + +fl= +fn=Hash::[]= +0 317050 + +fl= +fn=Array::count +0 36496 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 2205336 +cfl= +cfn=String::split +calls=2750940 28 +28 3550438 +cfl= +cfn=Array::[] +calls=13754700 30 +30 793460 + +fl= +fn=Array::<< +0 292131 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 370353 +cfl= +cfn=String::split +calls=500000 18 +18 596725 +cfl= +cfn=Array::[] +calls=2000000 20 +20 113918 + +fl= +fn=String::== +0 472324 + +fl= +fn=Array::[] +0 1282983 + +fl= +fn=Array::each +0 10086001 +cfl= +cfn=String::split +calls=3250940 53 +53 4233480 +cfl= +cfn=Array::[] +calls=6501880 55 +55 375605 +cfl= +cfn=String::== +calls=6501880 55 +55 472324 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=500000 55 +55 1080996 +cfl= +cfn=Array::<< +calls=3750940 55 +55 292131 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=2750940 56 +56 6549234 +cfl= +cfn=Hash::[] +calls=1500000 100 +100 510506 +cfl= +cfn=Class::new +calls=500000 100 +100 695372 +cfl= +cfn=User::attributes +calls=1000000 40 +40 76434 +cfl= +cfn=String::+ +calls=2000000 40 +40 228964 +cfl= +cfn=Hash::[]= +calls=992465 41 +41 317049 +cfl= +cfn=User::sessions +calls=3500000 112 +112 250178 +cfl= +cfn=Array::count +calls=500000 112 +112 36483 +cfl= +cfn=Array::map +calls=5500000 112 +112 17694398 +cfl= +cfn=Array::sum +calls=500000 112 +112 47934 +cfl= +cfn=Integer::to_s +calls=1000000 112 +112 101818 +cfl= +cfn=Array::max +calls=500000 112 +112 45209 +cfl= +cfn=Array::sort +calls=1000000 112 +112 2149857 +cfl= +cfn=Array::join +calls=500000 112 +112 868045 +cfl= +cfn=Array::any? +calls=500000 112 +112 707539 +cfl= +cfn=Array::all? +calls=500000 112 +112 339317 +cfl= +cfn=Array::reverse +calls=500000 112 +112 303476 +cfl= +cfn=Hash::merge +calls=500000 112 +112 1520707 + +fl= +fn=String::split +0 8617559 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 29256 +cfl= +cfn=String::split +calls=1 47 +47 236916 +cfl= +cfn=Array::each +calls=2 52 +52 18478941 +cfl= +cfn=Array::count +calls=3 76 +76 13 +cfl= +cfn=Hash::[]= +calls=1 76 +76 2 +cfl= +cfn=Array::map +calls=3 79 +79 2093279 +cfl= +cfn=Array::uniq +calls=2 79 +79 1040496 +cfl= +cfn=Array::sort +calls=1 85 +85 424295 +cfl= +cfn=Array::join +calls=1 85 +85 14 +cfl= +cfn=Enumerable::group_by +calls=1 96 +96 956159 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=1 110 +110 29547981 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 122 +122 988968 +cfl= +cfn=IO::write^ +calls=1 122 +122 52743 + +fl= +fn=IO::read^ +0 93703 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 59 +cfl= +cfn=IO::read^ +calls=1 10 +10 93703 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 53849062 + diff --git a/reports/callgrind/callgrind.out.74579 b/reports/callgrind/callgrind.out.74579 new file mode 100644 index 00000000..858796f2 --- /dev/null +++ b/reports/callgrind/callgrind.out.74579 @@ -0,0 +1,434 @@ +events: wall_time + +fl= +fn=IO::write^ +0 1890 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 2 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 1858 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 2 + +fl= +fn=Date::iso8601 +0 1895 + +fl= +fn=Array::reverse +0 148 + +fl= +fn=Date::<=> +0 1378 + +fl= +fn=Integer::div +0 657 + +fl= +fn=String::[]= +0 924 + +fl= +fn=MatchData::end +0 643 + +fl= +fn=MatchData::begin +0 2224 + +fl= +fn=Regexp::match +0 3544 + +fl= +fn=String::gsub! +0 3349 + +fl= +fn=Date::parse^ +0 11155 +cfl= +cfn=String::gsub! +calls=8464 0 +0 3349 +cfl= +cfn=Regexp::match +calls=16928 0 +0 3544 +cfl= +cfn=MatchData::begin +calls=8464 0 +0 2224 +cfl= +cfn=MatchData::end +calls=8464 0 +0 643 +cfl= +cfn=String::[]= +calls=8464 0 +0 924 +cfl= +cfn=Integer::div +calls=8464 0 +0 657 + +fl= +fn=Array::all? +0 532 +cfl= +cfn=String::upcase +calls=1979 133 +133 175 +cfl= +cfn=String::=~ +calls=1979 133 +133 335 + +fl= +fn=String::=~ +0 1059 + +fl= +fn=Array::any? +0 1028 +cfl= +cfn=String::upcase +calls=4492 128 +128 393 +cfl= +cfn=String::=~ +calls=4492 128 +128 725 + +fl= +fn=Array::max +0 129 + +fl= +fn=Integer::to_s +0 297 + +fl= +fn=Array::sum +0 142 + +fl= +fn=String::to_i +0 1291 + +fl= +fn=Hash::merge +0 2067 + +fl= +fn=User::sessions +0 759 + +fl= +fn=String::+ +0 2524 + +fl= +fn=User::attributes +0 1554 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 7 +cfl= +cfn=Array::each +calls=7 39 +39 72157 + +fl= +fn=Array::+ +0 1120 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 251 + +fl= +fn=Class::new +0 380 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=1536 0 +0 251 + +fl= +fn=Hash::[] +0 3008 + +fl= +fn=Enumerable::group_by +0 4 +cfl= +cfn=Array::each +calls=1 0 +0 1841 + +fl= +fn=Array::join +0 496 + +fl= +fn=Array::sort +0 2891 +cfl= +cfn=Date::<=> +calls=17169 0 +0 1378 + +fl= +fn=String::upcase +0 2098 + +fl= +fn=Array::uniq +0 1188 + +fl= +fn=Array::map +0 14562 +cfl= +cfn=String::upcase +calls=16928 88 +88 1530 +cfl= +cfn=String::to_i +calls=16928 113 +113 1291 +cfl= +cfn=Date::parse^ +calls=8464 138 +138 22496 +cfl= +cfn=Date::iso8601 +calls=8464 138 +138 1895 + +fl= +fn=Hash::[]= +0 1604 + +fl= +fn=Array::count +0 95 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 7168 +cfl= +cfn=String::split +calls=8464 28 +28 4180 +cfl= +cfn=Array::[] +calls=42320 30 +30 3018 + +fl= +fn=Array::<< +0 1022 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 1144 +cfl= +cfn=String::split +calls=1536 18 +18 654 +cfl= +cfn=Array::[] +calls=6144 20 +20 444 + +fl= +fn=String::== +0 1836 + +fl= +fn=Array::[] +0 4910 + +fl= +fn=Array::each +0 26899 +cfl= +cfn=String::split +calls=10000 53 +53 4372 +cfl= +cfn=Array::[] +calls=20000 55 +55 1448 +cfl= +cfn=String::== +calls=20000 55 +55 1836 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=1536 55 +55 2242 +cfl= +cfn=Array::<< +calls=10000 55 +55 1022 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=8464 56 +56 14366 +cfl= +cfn=Hash::[] +calls=23040 100 +100 3008 +cfl= +cfn=Class::new +calls=1536 100 +100 631 +cfl= +cfn=Array::+ +calls=1536 101 +101 1120 +cfl= +cfn=User::attributes +calls=21504 40 +40 1554 +cfl= +cfn=String::+ +calls=24576 40 +40 2524 +cfl= +cfn=Hash::[]= +calls=12288 41 +41 1603 +cfl= +cfn=User::sessions +calls=10752 108 +108 759 +cfl= +cfn=Array::count +calls=1536 108 +108 93 +cfl= +cfn=Hash::merge +calls=10752 108 +108 2067 +cfl= +cfn=Array::map +calls=16896 113 +113 38107 +cfl= +cfn=Array::sum +calls=1536 113 +113 142 +cfl= +cfn=Integer::to_s +calls=3072 113 +113 297 +cfl= +cfn=Array::max +calls=1536 118 +118 129 +cfl= +cfn=Array::sort +calls=3072 123 +123 3319 +cfl= +cfn=Array::join +calls=1536 123 +123 478 +cfl= +cfn=Array::any? +calls=1536 128 +128 2145 +cfl= +cfn=Array::all? +calls=1536 133 +133 1042 +cfl= +cfn=Array::reverse +calls=1536 138 +138 148 + +fl= +fn=String::split +0 9965 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 143 +cfl= +cfn=String::split +calls=1 47 +47 759 +cfl= +cfn=Array::each +calls=2 52 +52 37351 +cfl= +cfn=Array::count +calls=3 76 +76 2 +cfl= +cfn=Hash::[]= +calls=1 76 +76 1 +cfl= +cfn=Array::map +calls=3 79 +79 3668 +cfl= +cfn=Array::uniq +calls=2 79 +79 1188 +cfl= +cfn=Array::sort +calls=1 85 +85 950 +cfl= +cfn=Array::join +calls=1 85 +85 18 +cfl= +cfn=Enumerable::group_by +calls=1 96 +96 1845 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 107 +107 72164 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 141 +141 1860 +cfl= +cfn=IO::write^ +calls=1 141 +141 1890 + +fl= +fn=IO::read^ +0 2745 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 10 +cfl= +cfn=IO::read^ +calls=1 10 +10 2745 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 121841 + diff --git a/reports/callgrind/callgrind.out.80423 b/reports/callgrind/callgrind.out.80423 new file mode 100644 index 00000000..b112f11a --- /dev/null +++ b/reports/callgrind/callgrind.out.80423 @@ -0,0 +1,394 @@ +events: wall_time + +fl= +fn=IO::write^ +0 7360 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 1 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 95716 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 1 + +fl= +fn=Hash::merge +0 69798 + +fl= +fn=Array::reverse +0 18844 + +fl= +fn=Date::iso8601 +0 87918 + +fl= +fn=Integer::div +0 26997 + +fl= +fn=Date::strptime^ +0 494654 +cfl= +cfn=Integer::div +calls=423067 0 +0 26997 + +fl= +fn=Array::all? +0 26337 +cfl= +cfn=String::upcase +calls=99150 116 +116 8242 +cfl= +cfn=String::=~ +calls=99150 116 +116 18319 + +fl= +fn=String::=~ +0 60123 + +fl= +fn=Array::any? +0 53866 +cfl= +cfn=String::upcase +calls=220694 115 +115 18002 +cfl= +cfn=String::=~ +calls=220694 115 +115 41804 + +fl= +fn=String::to_s +0 5425 + +fl= +fn=Enumerable::max_by +0 12919 +cfl= +cfn=Array::each +calls=76933 0 +0 98866 + +fl= +fn=Integer::to_s +0 7241 + +fl= +fn=String::to_i +0 60511 + +fl= +fn=Array::sum +0 96568 +cfl= +cfn=String::to_i +calls=423067 112 +112 31221 + +fl= +fn=User::sessions +0 32202 + +fl= +fn=String::+ +0 30823 + +fl= +fn=User::attributes +0 11099 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 8 +cfl= +cfn=Array::each +calls=1 39 +39 1944046 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 12988 + +fl= +fn=Class::new +0 37565 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=76933 0 +0 12988 + +fl= +fn=Hash::[] +0 48835 + +fl= +fn=Enumerable::group_by +0 5 +cfl= +cfn=Array::each +calls=1 0 +0 94356 + +fl= +fn=Array::join +0 42711 + +fl= +fn=Array::sort +0 129454 + +fl= +fn=String::upcase +0 128268 + +fl= +fn=Array::uniq +0 82039 + +fl= +fn=Array::map +0 334878 +cfl= +cfn=String::upcase +calls=846134 87 +87 102024 +cfl= +cfn=Date::strptime^ +calls=423067 117 +117 521651 +cfl= +cfn=Date::iso8601 +calls=423067 117 +117 87918 + +fl= +fn=Hash::[]= +0 40611 + +fl= +fn=Array::count +0 5528 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 302331 +cfl= +cfn=String::split +calls=423067 28 +28 270891 +cfl= +cfn=Array::[] +calls=2115335 30 +30 122791 + +fl= +fn=Array::<< +0 45507 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 49158 +cfl= +cfn=String::split +calls=76933 18 +18 44393 +cfl= +cfn=Array::[] +calls=307732 20 +20 17879 + +fl= +fn=String::== +0 75686 + +fl= +fn=Array::[] +0 199461 + +fl= +fn=Array::each +0 962314 +cfl= +cfn=String::split +calls=500000 53 +53 315825 +cfl= +cfn=Array::[] +calls=1000000 55 +55 58791 +cfl= +cfn=String::== +calls=1000000 55 +55 75686 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=76933 55 +55 111429 +cfl= +cfn=Array::<< +calls=576933 55 +55 45507 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=423067 56 +56 696013 +cfl= +cfn=Hash::[] +calls=230799 99 +99 48835 +cfl= +cfn=Class::new +calls=76933 99 +99 50553 +cfl= +cfn=User::attributes +calls=153866 40 +40 11099 +cfl= +cfn=String::+ +calls=307732 40 +40 30823 +cfl= +cfn=Hash::[]= +calls=153681 41 +41 40608 +cfl= +cfn=User::sessions +calls=538531 111 +111 32202 +cfl= +cfn=Array::count +calls=76933 111 +111 5519 +cfl= +cfn=Array::sum +calls=76933 111 +111 127789 +cfl= +cfn=Integer::to_s +calls=76933 111 +111 7241 +cfl= +cfn=Enumerable::max_by +calls=76933 111 +111 111785 +cfl= +cfn=String::to_s +calls=76933 111 +111 5425 +cfl= +cfn=Array::map +calls=153866 111 +111 844866 +cfl= +cfn=Array::sort +calls=153866 111 +111 87576 +cfl= +cfn=Array::join +calls=76933 111 +111 42687 +cfl= +cfn=Array::any? +calls=76933 111 +111 113672 +cfl= +cfn=Array::all? +calls=76933 111 +111 52898 +cfl= +cfn=Array::reverse +calls=76933 111 +111 18844 +cfl= +cfn=Hash::merge +calls=76933 111 +111 69798 +cfl= +cfn=String::to_i +calls=423067 113 +113 29290 + +fl= +fn=String::split +0 662253 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 2726 +cfl= +cfn=String::split +calls=1 47 +47 31144 +cfl= +cfn=Array::each +calls=2 52 +52 1859808 +cfl= +cfn=Array::count +calls=3 76 +76 9 +cfl= +cfn=Hash::[]= +calls=1 76 +76 3 +cfl= +cfn=Array::map +calls=2 79 +79 201605 +cfl= +cfn=Array::uniq +calls=2 79 +79 82039 +cfl= +cfn=Array::sort +calls=1 85 +85 41878 +cfl= +cfn=Array::join +calls=1 85 +85 23 +cfl= +cfn=Enumerable::group_by +calls=1 95 +95 94361 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=1 109 +109 1944055 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 121 +121 95717 +cfl= +cfn=IO::write^ +calls=1 121 +121 7360 + +fl= +fn=IO::read^ +0 6673 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 65 +cfl= +cfn=IO::read^ +calls=1 10 +10 6673 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 4360728 + diff --git a/reports/callgrind/callgrind.out.85923 b/reports/callgrind/callgrind.out.85923 new file mode 100644 index 00000000..281a3558 --- /dev/null +++ b/reports/callgrind/callgrind.out.85923 @@ -0,0 +1,394 @@ +events: wall_time + +fl= +fn=IO::write^ +0 12159 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 1 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 119061 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 1 + +fl= +fn=Date::iso8601 +0 81019 + +fl= +fn=Array::reverse +0 21038 + +fl= +fn=Date::<=> +0 62678 + +fl= +fn=Integer::div +0 28032 + +fl= +fn=Date::strptime^ +0 504390 +cfl= +cfn=Integer::div +calls=423067 0 +0 28032 + +fl= +fn=Array::all? +0 24795 +cfl= +cfn=String::upcase +calls=99150 133 +133 8612 +cfl= +cfn=String::=~ +calls=99150 133 +133 16567 + +fl= +fn=String::=~ +0 54346 + +fl= +fn=Array::any? +0 53449 +cfl= +cfn=String::upcase +calls=220694 128 +128 19909 +cfl= +cfn=String::=~ +calls=220694 128 +128 37779 + +fl= +fn=Array::max +0 6705 + +fl= +fn=Integer::to_s +0 15255 + +fl= +fn=Array::sum +0 7946 + +fl= +fn=String::to_i +0 63916 + +fl= +fn=Hash::merge +0 423989 + +fl= +fn=User::sessions +0 45108 + +fl= +fn=String::+ +0 129457 + +fl= +fn=User::attributes +0 76363 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 9 +cfl= +cfn=Array::each +calls=7 39 +39 4067277 + +fl= +fn=Array::+ +0 3942337 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 17801 + +fl= +fn=Class::new +0 77862 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=76933 0 +0 17801 + +fl= +fn=Hash::[] +0 432225 + +fl= +fn=Enumerable::group_by +0 4 +cfl= +cfn=Array::each +calls=1 0 +0 97422 + +fl= +fn=Array::join +0 50410 + +fl= +fn=Array::sort +0 180791 +cfl= +cfn=Date::<=> +calls=856548 0 +0 62678 + +fl= +fn=String::upcase +0 122739 + +fl= +fn=Array::uniq +0 98999 + +fl= +fn=Array::map +0 856241 +cfl= +cfn=String::upcase +calls=846134 88 +88 94218 +cfl= +cfn=String::to_i +calls=846134 113 +113 63916 +cfl= +cfn=Date::strptime^ +calls=423067 138 +138 532422 +cfl= +cfn=Date::iso8601 +calls=423067 138 +138 81019 + +fl= +fn=Hash::[]= +0 92305 + +fl= +fn=Array::count +0 6665 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 294336 +cfl= +cfn=String::split +calls=423067 28 +28 258482 +cfl= +cfn=Array::[] +calls=2115335 30 +30 120805 + +fl= +fn=Array::<< +0 39364 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 47818 +cfl= +cfn=String::split +calls=76933 18 +18 43974 +cfl= +cfn=Array::[] +calls=307732 20 +20 17644 + +fl= +fn=String::== +0 73214 + +fl= +fn=Array::[] +0 196206 + +fl= +fn=Array::each +0 1837933 +cfl= +cfn=String::split +calls=500000 53 +53 294122 +cfl= +cfn=Array::[] +calls=1000000 55 +55 57757 +cfl= +cfn=String::== +calls=1000000 55 +55 73214 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=76933 55 +55 109435 +cfl= +cfn=Array::<< +calls=500000 55 +55 39364 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=423067 56 +56 673623 +cfl= +cfn=Hash::[] +calls=1153995 100 +100 432225 +cfl= +cfn=Class::new +calls=76933 100 +100 95663 +cfl= +cfn=Array::+ +calls=76933 101 +101 3942337 +cfl= +cfn=User::attributes +calls=1077062 40 +40 76363 +cfl= +cfn=String::+ +calls=1230928 40 +40 129457 +cfl= +cfn=Hash::[]= +calls=615279 41 +41 92304 +cfl= +cfn=User::sessions +calls=538531 108 +108 45108 +cfl= +cfn=Array::count +calls=76933 108 +108 6662 +cfl= +cfn=Hash::merge +calls=538531 108 +108 423989 +cfl= +cfn=Array::map +calls=846263 113 +113 1414680 +cfl= +cfn=Array::sum +calls=76933 113 +113 7946 +cfl= +cfn=Integer::to_s +calls=153866 113 +113 15255 +cfl= +cfn=Array::max +calls=76933 118 +118 6705 +cfl= +cfn=Array::sort +calls=153866 123 +123 200808 +cfl= +cfn=Array::join +calls=76933 123 +123 50397 +cfl= +cfn=Array::any? +calls=76933 128 +128 111137 +cfl= +cfn=Array::all? +calls=76933 133 +133 49974 +cfl= +cfn=Array::reverse +calls=76933 138 +138 21038 + +fl= +fn=String::split +0 625520 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 2848 +cfl= +cfn=String::split +calls=1 47 +47 28942 +cfl= +cfn=Array::each +calls=2 52 +52 6042796 +cfl= +cfn=Array::count +calls=3 76 +76 3 +cfl= +cfn=Hash::[]= +calls=1 76 +76 1 +cfl= +cfn=Array::map +calls=3 79 +79 213136 +cfl= +cfn=Array::uniq +calls=2 79 +79 98999 +cfl= +cfn=Array::sort +calls=1 85 +85 42662 +cfl= +cfn=Array::join +calls=1 85 +85 12 +cfl= +cfn=Enumerable::group_by +calls=1 96 +96 97427 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 107 +107 4067287 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 141 +141 119062 +cfl= +cfn=IO::write^ +calls=1 141 +141 12159 + +fl= +fn=IO::read^ +0 12911 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 14 +cfl= +cfn=IO::read^ +calls=1 10 +10 12911 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 10725333 + diff --git a/reports/callgrind/callgrind.out.94361 b/reports/callgrind/callgrind.out.94361 new file mode 100644 index 00000000..da8650f5 --- /dev/null +++ b/reports/callgrind/callgrind.out.94361 @@ -0,0 +1,386 @@ +events: wall_time + +fl= +fn=IO::write^ +0 5499 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 0 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 101768 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 0 + +fl= +fn=Date::iso8601 +0 86130 + +fl= +fn=Array::reverse +0 19059 + +fl= +fn=Date::<=> +0 66463 + +fl= +fn=Integer::div +0 29705 + +fl= +fn=Date::strptime^ +0 490948 +cfl= +cfn=Integer::div +calls=423067 0 +0 29705 + +fl= +fn=Array::all? +0 26053 +cfl= +cfn=String::upcase +calls=99150 133 +133 8908 +cfl= +cfn=String::=~ +calls=99150 133 +133 16684 + +fl= +fn=String::=~ +0 52972 + +fl= +fn=Array::any? +0 51640 +cfl= +cfn=String::upcase +calls=220694 128 +128 19416 +cfl= +cfn=String::=~ +calls=220694 128 +128 36289 + +fl= +fn=Array::max +0 6479 + +fl= +fn=Integer::to_s +0 13330 + +fl= +fn=Array::sum +0 7396 + +fl= +fn=String::to_i +0 64568 + +fl= +fn=Hash::merge +0 385929 + +fl= +fn=User::sessions +0 42229 + +fl= +fn=String::+ +0 125163 + +fl= +fn=User::attributes +0 74360 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 9 +cfl= +cfn=Array::each +calls=7 39 +39 3959797 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 12491 + +fl= +fn=Class::new +0 34860 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=76933 0 +0 12491 + +fl= +fn=Hash::[] +0 276495 + +fl= +fn=Enumerable::group_by +0 7 +cfl= +cfn=Array::each +calls=1 0 +0 97050 + +fl= +fn=Array::join +0 47917 + +fl= +fn=Array::sort +0 174809 +cfl= +cfn=Date::<=> +calls=856548 0 +0 66463 + +fl= +fn=String::upcase +0 121971 + +fl= +fn=Array::uniq +0 85672 + +fl= +fn=Array::map +0 865002 +cfl= +cfn=String::upcase +calls=846134 88 +88 93646 +cfl= +cfn=String::to_i +calls=846134 113 +113 64568 +cfl= +cfn=Date::strptime^ +calls=423067 138 +138 520654 +cfl= +cfn=Date::iso8601 +calls=423067 138 +138 86130 + +fl= +fn=Hash::[]= +0 81316 + +fl= +fn=Array::count +0 5407 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 298059 +cfl= +cfn=String::split +calls=423067 28 +28 249965 +cfl= +cfn=Array::[] +calls=2115335 30 +30 121974 + +fl= +fn=Array::<< +0 45463 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 49193 +cfl= +cfn=String::split +calls=76933 18 +18 43510 +cfl= +cfn=Array::[] +calls=307732 20 +20 17852 + +fl= +fn=String::== +0 74306 + +fl= +fn=Array::[] +0 198449 + +fl= +fn=Array::each +0 1696096 +cfl= +cfn=String::split +calls=500000 53 +53 299501 +cfl= +cfn=Array::[] +calls=1000000 55 +55 58623 +cfl= +cfn=String::== +calls=1000000 55 +55 74306 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=76933 55 +55 110555 +cfl= +cfn=Array::<< +calls=576933 55 +55 45463 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=423067 56 +56 669998 +cfl= +cfn=Hash::[] +calls=1153995 100 +100 276495 +cfl= +cfn=Class::new +calls=76933 100 +100 47351 +cfl= +cfn=User::attributes +calls=1077062 40 +40 74360 +cfl= +cfn=String::+ +calls=1230928 40 +40 125163 +cfl= +cfn=Hash::[]= +calls=615279 41 +41 81315 +cfl= +cfn=User::sessions +calls=538531 108 +108 42229 +cfl= +cfn=Array::count +calls=76933 108 +108 5404 +cfl= +cfn=Hash::merge +calls=538531 108 +108 385929 +cfl= +cfn=Array::map +calls=846263 113 +113 1412998 +cfl= +cfn=Array::sum +calls=76933 113 +113 7396 +cfl= +cfn=Integer::to_s +calls=153866 113 +113 13330 +cfl= +cfn=Array::max +calls=76933 118 +118 6479 +cfl= +cfn=Array::sort +calls=153866 123 +123 201473 +cfl= +cfn=Array::join +calls=76933 123 +123 47903 +cfl= +cfn=Array::any? +calls=76933 128 +128 107345 +cfl= +cfn=Array::all? +calls=76933 133 +133 51645 +cfl= +cfn=Array::reverse +calls=76933 138 +138 19059 + +fl= +fn=String::split +0 626271 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 2728 +cfl= +cfn=String::split +calls=1 47 +47 33295 +cfl= +cfn=Array::each +calls=2 52 +52 1803569 +cfl= +cfn=Array::count +calls=3 76 +76 3 +cfl= +cfn=Hash::[]= +calls=1 76 +76 1 +cfl= +cfn=Array::map +calls=3 79 +79 217002 +cfl= +cfn=Array::uniq +calls=2 79 +79 85672 +cfl= +cfn=Array::sort +calls=1 85 +85 39799 +cfl= +cfn=Array::join +calls=1 85 +85 13 +cfl= +cfn=Enumerable::group_by +calls=1 96 +96 97057 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 107 +107 3959806 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 141 +141 101769 +cfl= +cfn=IO::write^ +calls=1 141 +141 5499 + +fl= +fn=IO::read^ +0 5487 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 10 +cfl= +cfn=IO::read^ +calls=1 10 +10 5487 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 6346212 + diff --git a/reports/callgrind/callgrind.out.94449 b/reports/callgrind/callgrind.out.94449 new file mode 100644 index 00000000..bfa23637 --- /dev/null +++ b/reports/callgrind/callgrind.out.94449 @@ -0,0 +1,438 @@ +events: wall_time + +fl= +fn=IO::write^ +0 3374 + +fl= +fn=JSON/Ext/Generator/State::initialize +0 0 + +fl= +fn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +0 2078 +cfl= +cfn=JSON/Ext/Generator/State::initialize +calls=1 0 +0 0 + +fl= +fn=Date::iso8601 +0 1775 + +fl= +fn=Array::reverse +0 160 + +fl= +fn=Date::<=> +0 1305 + +fl= +fn=Integer::div +0 639 + +fl= +fn=String::[]= +0 960 + +fl= +fn=MatchData::end +0 633 + +fl= +fn=MatchData::begin +0 1992 + +fl= +fn=Regexp::match +0 3548 + +fl= +fn=String::gsub! +0 3376 + +fl= +fn=Date::parse^ +0 11314 +cfl= +cfn=String::gsub! +calls=8464 0 +0 3376 +cfl= +cfn=Regexp::match +calls=16928 0 +0 3548 +cfl= +cfn=MatchData::begin +calls=8464 0 +0 1992 +cfl= +cfn=MatchData::end +calls=8464 0 +0 633 +cfl= +cfn=String::[]= +calls=8464 0 +0 960 +cfl= +cfn=Integer::div +calls=8464 0 +0 639 + +fl= +fn=String::=~ +0 1033 + +fl= +fn=Array::any? +0 1021 +cfl= +cfn=String::upcase +calls=4492 130 +130 381 +cfl= +cfn=String::=~ +calls=4492 130 +130 714 + +fl= +fn=Array::max +0 145 + +fl= +fn=Integer::to_s +0 270 + +fl= +fn=Array::sum +0 148 + +fl= +fn=String::to_i +0 1301 + +fl= +fn=Hash::merge +0 1881 + +fl= +fn=User::sessions +0 758 + +fl= +fn=Hash::[] +0 2740 + +fl= +fn=String::+ +0 2593 + +fl= +fn=User::attributes +0 1466 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::collect_stats_from_users +38 18 +cfl= +cfn=Array::each +calls=7 39 +39 74567 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=User::initialize +11 360 + +fl= +fn=Class::new +0 1131 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=User::initialize +calls=1536 0 +0 360 + +fl= +fn=Array::select +0 1922354 +cfl= +cfn=String::== +calls=13000704 101 +101 696542 + +fl= +fn=Array::join +0 484 + +fl= +fn=Array::uniq +0 244 + +fl= +fn=Array::sort +0 2636 +cfl= +cfn=Date::<=> +calls=17169 0 +0 1305 + +fl= +fn=String::upcase +0 2028 + +fl= +fn=Array::map +0 16640 +cfl= +cfn=String::upcase +calls=16928 91 +91 1478 +cfl= +cfn=String::to_i +calls=16928 115 +115 1301 +cfl= +cfn=Date::parse^ +calls=8464 140 +140 22462 +cfl= +cfn=Date::iso8601 +calls=8464 140 +140 1775 + +fl= +fn=BasicObject::!= +0 108799 +cfl= +cfn=String::== +calls=841276 0 +0 58663 + +fl= +fn=Array::all? +0 110922 +cfl= +cfn=BasicObject::!= +calls=841276 81 +81 167462 +cfl= +cfn=String::upcase +calls=1979 135 +135 169 +cfl= +cfn=String::=~ +calls=1979 135 +135 319 + +fl= +fn=Hash::[]= +0 1706 + +fl= +fn=Array::count +0 146 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_session +27 7043 +cfl= +cfn=String::split +calls=8464 28 +28 3944 +cfl= +cfn=Array::[] +calls=42320 30 +30 2916 + +fl= +fn=Array::+ +0 44331 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::parse_user +17 1208 +cfl= +cfn=String::split +calls=1536 18 +18 642 +cfl= +cfn=Array::[] +calls=6144 20 +20 431 + +fl= +fn=String::== +0 756978 + +fl= +fn=Array::[] +0 4776 + +fl= +fn=Array::each +0 28790 +cfl= +cfn=String::split +calls=10000 53 +53 4800 +cfl= +cfn=Array::[] +calls=20000 54 +54 1428 +cfl= +cfn=String::== +calls=20000 54 +54 1773 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_user +calls=1536 54 +54 2281 +cfl= +cfn=Array::+ +calls=11736 54 +54 44331 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::parse_session +calls=8464 55 +55 13903 +cfl= +cfn=Array::all? +calls=10000 81 +81 278872 +cfl= +cfn=Array::select +calls=1536 101 +101 2618896 +cfl= +cfn=Class::new +calls=1536 102 +102 1491 +cfl= +cfn=User::attributes +calls=21504 40 +40 1466 +cfl= +cfn=String::+ +calls=24576 40 +40 2593 +cfl= +cfn=Hash::[] +calls=21504 41 +41 2740 +cfl= +cfn=Hash::[]= +calls=12288 41 +41 1705 +cfl= +cfn=User::sessions +calls=10752 110 +110 758 +cfl= +cfn=Array::count +calls=1536 110 +110 144 +cfl= +cfn=Hash::merge +calls=10752 110 +110 1881 +cfl= +cfn=Array::map +calls=16896 115 +115 40426 +cfl= +cfn=Array::sum +calls=1536 115 +115 148 +cfl= +cfn=Integer::to_s +calls=3072 115 +115 270 +cfl= +cfn=Array::max +calls=1536 120 +120 145 +cfl= +cfn=Array::sort +calls=3072 125 +125 3181 +cfl= +cfn=Array::join +calls=1536 125 +125 477 +cfl= +cfn=Array::any? +calls=1536 130 +130 2115 +cfl= +cfn=Array::reverse +calls=1536 140 +140 160 + +fl= +fn=String::split +0 10294 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +fn=Object::work +46 126 +cfl= +cfn=String::split +calls=1 47 +47 909 +cfl= +cfn=Array::each +calls=3 52 +52 2980205 +cfl= +cfn=Array::count +calls=3 75 +75 3 +cfl= +cfn=Hash::[]= +calls=1 75 +75 1 +cfl= +cfn=Array::map +calls=2 88 +88 3230 +cfl= +cfn=Array::sort +calls=1 88 +88 760 +cfl= +cfn=Array::uniq +calls=1 88 +88 244 +cfl= +cfn=Array::join +calls=1 88 +88 7 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::collect_stats_from_users +calls=7 109 +109 74586 +cfl= +cfn=JSON/Ext/Generator/GeneratorMethods/Hash::to_json +calls=1 143 +143 2078 +cfl= +cfn=IO::write^ +calls=1 143 +143 3374 + +fl= +fn=IO::read^ +0 2488 + +fl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/profilling.rb +fn=[global]:: +10 16 +cfl= +cfn=IO::read^ +calls=1 10 +10 2488 +cfl=/Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb +cfn=Object::work +calls=1 10 +10 3065522 + diff --git a/reports/flat/flat10000_1.txt b/reports/flat/flat10000_1.txt new file mode 100644 index 00000000..c887fd90 --- /dev/null +++ b/reports/flat/flat10000_1.txt @@ -0,0 +1,73 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 3.068026 +Sort by: self_time + + %self total self wait child calls name location + 62.66 2.619 1.922 0.000 0.697 1536 Array#select + 24.67 0.757 0.757 0.000 0.000 13861980 String#== + 3.62 0.279 0.111 0.000 0.168 10000 Array#all? + 3.55 0.167 0.109 0.000 0.059 841276 BasicObject#!= + 1.44 0.044 0.044 0.000 0.000 11736 Array#+ + 0.94 3.055 0.029 0.000 3.026 10 Array#each + 0.54 0.044 0.017 0.000 0.027 16898 Array#map + 0.37 0.022 0.011 0.000 0.011 8464 #parse + 0.34 0.010 0.010 0.000 0.000 20001 String#split + 0.23 0.014 0.007 0.000 0.007 8464 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 0.16 0.005 0.005 0.000 0.000 68464 Array#[] + 0.12 0.004 0.004 0.000 0.000 16928 Regexp#match + 0.11 0.003 0.003 0.000 0.000 8464 String#gsub! + 0.11 0.003 0.003 0.000 0.000 1 #write + 0.09 0.003 0.003 0.000 0.000 21504 Hash#[] + 0.09 0.004 0.003 0.000 0.001 3073 Array#sort + 0.08 0.003 0.003 0.000 0.000 24576 String#+ + 0.08 0.002 0.002 0.000 0.000 1 #read + 0.07 0.002 0.002 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 0.07 0.002 0.002 0.000 0.000 23399 String#upcase + 0.06 0.002 0.002 0.000 0.000 8464 MatchData#begin + 0.06 0.002 0.002 0.000 0.000 10752 Hash#merge + 0.06 0.002 0.002 0.000 0.000 8464 Date#iso8601 + 0.06 0.002 0.002 0.000 0.000 12289 Hash#[]= + 0.05 0.001 0.001 0.000 0.000 21504 User#attributes + 0.04 0.001 0.001 0.000 0.000 17169 Date#<=> + 0.04 0.001 0.001 0.000 0.000 16928 String#to_i + 0.04 0.002 0.001 0.000 0.001 1536 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.04 0.001 0.001 0.000 0.000 1536 Class#new + 0.03 0.001 0.001 0.000 0.000 6471 String#=~ + 0.03 0.002 0.001 0.000 0.001 1536 Array#any? + 0.03 0.001 0.001 0.000 0.000 8464 String#[]= + 0.02 0.001 0.001 0.000 0.000 10752 User#sessions + 0.02 0.001 0.001 0.000 0.000 8464 Integer#div + 0.02 0.001 0.001 0.000 0.000 8464 MatchData#end + 0.02 0.000 0.000 0.000 0.000 1537 Array#join + 0.01 0.000 0.000 0.000 0.000 1536 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.01 0.000 0.000 0.000 0.000 3072 Integer#to_s + 0.01 0.000 0.000 0.000 0.000 1 Array#uniq + 0.01 0.000 0.000 0.000 0.000 1536 Array#reverse + 0.00 0.000 0.000 0.000 0.000 1536 Array#sum + 0.00 0.000 0.000 0.000 0.000 1539 Array#count + 0.00 0.000 0.000 0.000 0.000 1536 Array#max + 0.00 3.066 0.000 0.000 3.065 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 0.075 0.000 0.000 0.075 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 3.068 0.000 0.000 3.068 1 [global]# profilling.rb:10 + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_2.txt b/reports/flat/flat10000_2.txt new file mode 100644 index 00000000..3ddeec67 --- /dev/null +++ b/reports/flat/flat10000_2.txt @@ -0,0 +1,73 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 0.479546 +Sort by: self_time + + %self total self wait child calls name location + 24.34 0.290 0.117 0.000 0.174 10000 Array#all? + 23.50 0.173 0.113 0.000 0.061 841276 BasicObject#!= + 14.01 0.067 0.067 0.000 0.000 11736 Array#+ + 12.97 0.062 0.062 0.000 0.000 861276 String#== + 6.31 0.469 0.030 0.000 0.439 11 Array#each + 3.06 0.042 0.015 0.000 0.027 16898 Array#map + 2.36 0.023 0.011 0.000 0.011 8464 #parse + 2.17 0.010 0.010 0.000 0.000 20001 String#split + 1.37 0.013 0.007 0.000 0.007 8464 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 0.89 0.004 0.004 0.000 0.000 68464 Array#[] + 0.77 0.004 0.004 0.000 0.000 16928 Regexp#match + 0.73 0.003 0.003 0.000 0.000 8464 String#gsub! + 0.62 0.003 0.003 0.000 0.000 23040 Hash#[] + 0.57 0.004 0.003 0.000 0.001 3073 Array#sort + 0.55 0.003 0.003 0.000 0.000 1 #write + 0.54 0.003 0.003 0.000 0.000 24576 String#+ + 0.45 0.002 0.002 0.000 0.000 8464 MatchData#begin + 0.44 0.002 0.002 0.000 0.000 23399 String#upcase + 0.40 0.002 0.002 0.000 0.000 10752 Hash#merge + 0.38 0.002 0.002 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 0.38 0.002 0.002 0.000 0.000 8464 Date#iso8601 + 0.34 0.002 0.002 0.000 0.000 12289 Hash#[]= + 0.30 0.001 0.001 0.000 0.000 21504 User#attributes + 0.28 0.001 0.001 0.000 0.000 17169 Date#<=> + 0.27 0.001 0.001 0.000 0.000 16928 String#to_i + 0.23 0.001 0.001 0.000 0.000 6471 String#=~ + 0.23 0.002 0.001 0.000 0.001 1536 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.23 0.002 0.001 0.000 0.001 1536 Array#any? + 0.19 0.001 0.001 0.000 0.000 8464 String#[]= + 0.18 0.001 0.001 0.000 0.000 1 #read + 0.17 0.001 0.001 0.000 0.000 10752 User#sessions + 0.13 0.001 0.001 0.000 0.000 8464 MatchData#end + 0.12 0.001 0.001 0.000 0.000 8464 Integer#div + 0.10 0.000 0.000 0.000 0.000 1537 Array#join + 0.09 0.001 0.000 0.000 0.000 1536 Class#new + 0.07 0.000 0.000 0.000 0.000 3072 Integer#to_s + 0.06 0.000 0.000 0.000 0.000 1536 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.05 0.000 0.000 0.000 0.000 1 Array#uniq + 0.03 0.000 0.000 0.000 0.000 1536 Array#reverse + 0.03 0.000 0.000 0.000 0.000 1536 Array#max + 0.03 0.000 0.000 0.000 0.000 1536 Array#sum + 0.03 0.479 0.000 0.000 0.479 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.02 0.000 0.000 0.000 0.000 1539 Array#count + 0.00 0.480 0.000 0.000 0.480 1 [global]# profilling.rb:10 + 0.00 0.073 0.000 0.000 0.073 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.002 0.000 0.000 0.002 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_3.txt b/reports/flat/flat10000_3.txt new file mode 100644 index 00000000..f7ab4851 --- /dev/null +++ b/reports/flat/flat10000_3.txt @@ -0,0 +1,72 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 0.197441 +Sort by: self_time + + %self total self wait child calls name location + 35.87 0.071 0.071 0.000 0.000 11536 Array#+ + 14.65 0.184 0.029 0.000 0.155 10 Array#each + 8.09 0.043 0.016 0.000 0.028 16899 Array#map + 5.89 0.012 0.012 0.000 0.000 20001 String#split + 5.78 0.023 0.011 0.000 0.012 8464 #parse + 3.27 0.014 0.006 0.000 0.007 8464 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 2.25 0.004 0.004 0.000 0.000 68464 Array#[] + 1.87 0.004 0.004 0.000 0.000 16928 Regexp#match + 1.79 0.004 0.004 0.000 0.000 8464 String#gsub! + 1.73 0.003 0.003 0.000 0.000 23040 Hash#[] + 1.41 0.004 0.003 0.000 0.001 3073 Array#sort + 1.32 0.003 0.003 0.000 0.000 24576 String#+ + 1.11 0.002 0.002 0.000 0.000 23399 String#upcase + 1.09 0.002 0.002 0.000 0.000 8464 MatchData#begin + 1.05 0.002 0.002 0.000 0.000 10752 Hash#merge + 1.03 0.002 0.002 0.000 0.000 2 Array#uniq + 1.00 0.002 0.002 0.000 0.000 1 #write + 0.97 0.002 0.002 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 0.84 0.002 0.002 0.000 0.000 12289 Hash#[]= + 0.84 0.002 0.002 0.000 0.000 8464 Date#iso8601 + 0.80 0.002 0.002 0.000 0.000 20000 String#== + 0.76 0.002 0.002 0.000 0.000 21504 User#attributes + 0.75 0.001 0.001 0.000 0.000 1 #read + 0.67 0.001 0.001 0.000 0.000 16928 String#to_i + 0.63 0.001 0.001 0.000 0.000 17169 Date#<=> + 0.59 0.002 0.001 0.000 0.001 1536 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.54 0.001 0.001 0.000 0.000 6471 String#=~ + 0.52 0.002 0.001 0.000 0.001 1536 Array#any? + 0.47 0.001 0.001 0.000 0.000 8464 String#[]= + 0.39 0.001 0.001 0.000 0.000 10752 User#sessions + 0.36 0.001 0.001 0.000 0.000 8464 MatchData#end + 0.28 0.001 0.001 0.000 0.001 1536 Array#all? + 0.26 0.001 0.001 0.000 0.000 8464 Integer#div + 0.25 0.000 0.000 0.000 0.000 1537 Array#join + 0.23 0.001 0.000 0.000 0.000 1536 Class#new + 0.15 0.000 0.000 0.000 0.000 3072 Integer#to_s + 0.14 0.000 0.000 0.000 0.000 1536 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.09 0.000 0.000 0.000 0.000 1536 Array#reverse + 0.08 0.000 0.000 0.000 0.000 1536 Array#sum + 0.07 0.000 0.000 0.000 0.000 1536 Array#max + 0.07 0.000 0.000 0.000 0.000 1539 Array#count + 0.06 0.196 0.000 0.000 0.196 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 0.197 0.000 0.000 0.197 1 [global]# profilling.rb:10 + 0.00 0.075 0.000 0.000 0.075 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.002 0.000 0.000 0.002 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_4.txt b/reports/flat/flat10000_4.txt new file mode 100644 index 00000000..4e42aeee --- /dev/null +++ b/reports/flat/flat10000_4.txt @@ -0,0 +1,73 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 0.124596 +Sort by: self_time + + %self total self wait child calls name location + 21.59 0.111 0.027 0.000 0.084 10 Array#each + 11.69 0.042 0.015 0.000 0.027 16899 Array#map + 8.95 0.022 0.011 0.000 0.011 8464 #parse + 8.00 0.010 0.010 0.000 0.000 20001 String#split + 5.75 0.014 0.007 0.000 0.007 8464 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 3.94 0.005 0.005 0.000 0.000 68464 Array#[] + 2.84 0.004 0.004 0.000 0.000 16928 Regexp#match + 2.69 0.003 0.003 0.000 0.000 8464 String#gsub! + 2.41 0.003 0.003 0.000 0.000 23040 Hash#[] + 2.32 0.004 0.003 0.000 0.001 3073 Array#sort + 2.20 0.003 0.003 0.000 0.000 1 #read + 2.03 0.003 0.003 0.000 0.000 24576 String#+ + 1.79 0.002 0.002 0.000 0.000 8464 MatchData#begin + 1.68 0.002 0.002 0.000 0.000 23399 String#upcase + 1.66 0.002 0.002 0.000 0.000 10752 Hash#merge + 1.52 0.002 0.002 0.000 0.000 8464 Date#iso8601 + 1.52 0.002 0.002 0.000 0.000 1 #write + 1.49 0.002 0.002 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 1.47 0.002 0.002 0.000 0.000 20000 String#== + 1.29 0.002 0.002 0.000 0.000 12289 Hash#[]= + 1.25 0.002 0.002 0.000 0.000 21504 User#attributes + 1.11 0.001 0.001 0.000 0.000 17169 Date#<=> + 1.04 0.001 0.001 0.000 0.000 16928 String#to_i + 0.95 0.001 0.001 0.000 0.000 2 Array#uniq + 0.92 0.002 0.001 0.000 0.001 1536 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.90 0.001 0.001 0.000 0.000 1536 Array#+ + 0.85 0.001 0.001 0.000 0.000 6471 String#=~ + 0.82 0.002 0.001 0.000 0.001 1536 Array#any? + 0.82 0.001 0.001 0.000 0.000 10000 Array#<< + 0.74 0.001 0.001 0.000 0.000 8464 String#[]= + 0.61 0.001 0.001 0.000 0.000 10752 User#sessions + 0.53 0.001 0.001 0.000 0.000 8464 Integer#div + 0.52 0.001 0.001 0.000 0.000 8464 MatchData#end + 0.43 0.001 0.001 0.000 0.001 1536 Array#all? + 0.40 0.000 0.000 0.000 0.000 1537 Array#join + 0.30 0.001 0.000 0.000 0.000 1536 Class#new + 0.24 0.000 0.000 0.000 0.000 3072 Integer#to_s + 0.20 0.000 0.000 0.000 0.000 1536 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.12 0.000 0.000 0.000 0.000 1536 Array#reverse + 0.11 0.122 0.000 0.000 0.122 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.11 0.000 0.000 0.000 0.000 1536 Array#sum + 0.10 0.000 0.000 0.000 0.000 1536 Array#max + 0.08 0.000 0.000 0.000 0.000 1539 Array#count + 0.01 0.125 0.000 0.000 0.125 1 [global]# profilling.rb:10 + 0.01 0.072 0.000 0.000 0.072 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.002 0.000 0.000 0.002 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_5.txt b/reports/flat/flat10000_5.txt new file mode 100644 index 00000000..544494fc --- /dev/null +++ b/reports/flat/flat10000_5.txt @@ -0,0 +1,68 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 10.738258 +Sort by: self_time + + %self total self wait child calls name location + 36.71 3.942 3.942 0.000 0.000 76933 Array#+ + 17.12 10.207 1.838 0.000 8.370 10 Array#each + 7.97 1.628 0.856 0.000 0.772 846266 Array#map + 5.83 0.626 0.626 0.000 0.000 1000001 String#split + 4.70 0.532 0.504 0.000 0.028 423067 #strptime + 4.03 0.432 0.432 0.000 0.000 1153995 Hash#[] + 3.95 0.424 0.424 0.000 0.000 538531 Hash#merge + 2.74 0.674 0.294 0.000 0.379 423067 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 1.83 0.196 0.196 0.000 0.000 3423067 Array#[] + 1.68 0.243 0.181 0.000 0.063 153867 Array#sort + 1.21 0.129 0.129 0.000 0.000 1230928 String#+ + 1.14 0.123 0.123 0.000 0.000 1165978 String#upcase + 1.11 0.119 0.119 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 0.92 0.099 0.099 0.000 0.000 2 Array#uniq + 0.86 0.092 0.092 0.000 0.000 615280 Hash#[]= + 0.75 0.081 0.081 0.000 0.000 423067 Date#iso8601 + 0.73 0.096 0.078 0.000 0.018 76933 Class#new + 0.71 0.076 0.076 0.000 0.000 1077062 User#attributes + 0.68 0.073 0.073 0.000 0.000 1000000 String#== + 0.60 0.064 0.064 0.000 0.000 846134 String#to_i + 0.58 0.063 0.063 0.000 0.000 856548 Date#<=> + 0.51 0.054 0.054 0.000 0.000 319844 String#=~ + 0.50 0.111 0.053 0.000 0.058 76933 Array#any? + 0.47 0.050 0.050 0.000 0.000 76934 Array#join + 0.45 0.109 0.048 0.000 0.062 76933 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.42 0.045 0.045 0.000 0.000 538531 User#sessions + 0.37 0.039 0.039 0.000 0.000 500000 Array#<< + 0.26 0.028 0.028 0.000 0.000 423067 Integer#div + 0.23 0.050 0.025 0.000 0.025 76933 Array#all? + 0.20 0.021 0.021 0.000 0.000 76933 Array#reverse + 0.17 0.018 0.018 0.000 0.000 76933 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.14 0.015 0.015 0.000 0.000 153866 Integer#to_s + 0.12 0.013 0.013 0.000 0.000 1 #read + 0.11 0.012 0.012 0.000 0.000 1 #write + 0.07 0.008 0.008 0.000 0.000 76933 Array#sum + 0.06 0.007 0.007 0.000 0.000 76933 Array#max + 0.06 0.007 0.007 0.000 0.000 76936 Array#count + 0.03 10.725 0.003 0.000 10.722 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 10.738 0.000 0.000 10.738 1 [global]# profilling.rb:10 + 0.00 4.067 0.000 0.000 4.067 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.097 0.000 0.000 0.097 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_6.txt b/reports/flat/flat10000_6.txt new file mode 100644 index 00000000..35f56ef0 --- /dev/null +++ b/reports/flat/flat10000_6.txt @@ -0,0 +1,67 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 6.351710 +Sort by: self_time + + %self total self wait child calls name location + 26.70 5.860 1.696 0.000 4.164 10 Array#each + 13.62 1.630 0.865 0.000 0.765 846266 Array#map + 9.86 0.626 0.626 0.000 0.000 1000001 String#split + 7.73 0.521 0.491 0.000 0.030 423067 #strptime + 6.08 0.386 0.386 0.000 0.000 538531 Hash#merge + 4.69 0.670 0.298 0.000 0.372 423067 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 4.35 0.276 0.276 0.000 0.000 1153995 Hash#[] + 3.12 0.198 0.198 0.000 0.000 3423067 Array#[] + 2.75 0.241 0.175 0.000 0.066 153867 Array#sort + 1.97 0.125 0.125 0.000 0.000 1230928 String#+ + 1.92 0.122 0.122 0.000 0.000 1165978 String#upcase + 1.60 0.102 0.102 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 1.36 0.086 0.086 0.000 0.000 423067 Date#iso8601 + 1.35 0.086 0.086 0.000 0.000 2 Array#uniq + 1.28 0.081 0.081 0.000 0.000 615280 Hash#[]= + 1.17 0.074 0.074 0.000 0.000 1077062 User#attributes + 1.17 0.074 0.074 0.000 0.000 1000000 String#== + 1.05 0.066 0.066 0.000 0.000 856548 Date#<=> + 1.02 0.065 0.065 0.000 0.000 846134 String#to_i + 0.83 0.053 0.053 0.000 0.000 319844 String#=~ + 0.81 0.107 0.052 0.000 0.056 76933 Array#any? + 0.77 0.111 0.049 0.000 0.061 76933 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.75 0.048 0.048 0.000 0.000 76934 Array#join + 0.72 0.045 0.045 0.000 0.000 576933 Array#<< + 0.66 0.042 0.042 0.000 0.000 538531 User#sessions + 0.55 0.047 0.035 0.000 0.012 76933 Class#new + 0.47 0.030 0.030 0.000 0.000 423067 Integer#div + 0.41 0.052 0.026 0.000 0.026 76933 Array#all? + 0.30 0.019 0.019 0.000 0.000 76933 Array#reverse + 0.21 0.013 0.013 0.000 0.000 153866 Integer#to_s + 0.20 0.012 0.012 0.000 0.000 76933 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.12 0.007 0.007 0.000 0.000 76933 Array#sum + 0.10 0.006 0.006 0.000 0.000 76933 Array#max + 0.09 0.005 0.005 0.000 0.000 1 #write + 0.09 0.005 0.005 0.000 0.000 1 #read + 0.09 0.005 0.005 0.000 0.000 76936 Array#count + 0.04 6.346 0.003 0.000 6.343 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 6.352 0.000 0.000 6.352 1 [global]# profilling.rb:10 + 0.00 3.960 0.000 0.000 3.960 7 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.097 0.000 0.000 0.097 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_7.txt b/reports/flat/flat10000_7.txt new file mode 100644 index 00000000..f45362b1 --- /dev/null +++ b/reports/flat/flat10000_7.txt @@ -0,0 +1,67 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 53.942824 +Sort by: self_time + + %self total self wait child calls name location + 18.70 48.983 10.086 0.000 38.897 4 Array#each + 17.31 9.517 9.338 0.000 0.179 2750940 #strptime + 15.98 8.618 8.618 0.000 0.000 6501881 String#split + 15.07 19.788 8.127 0.000 11.660 5500003 Array#map + 4.09 6.549 2.205 0.000 4.344 2750940 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 4.03 2.574 2.173 0.000 0.402 1000001 Array#sort + 2.82 1.521 1.521 0.000 0.000 500000 Hash#merge + 2.53 1.364 1.364 0.000 0.000 7577617 String#upcase + 2.38 1.283 1.283 0.000 0.000 22256580 Array#[] + 1.93 1.040 1.040 0.000 0.000 2 Array#uniq + 1.83 0.989 0.989 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 1.61 0.868 0.868 0.000 0.000 500001 Array#join + 1.14 0.695 0.613 0.000 0.082 500000 Class#new + 1.00 0.542 0.542 0.000 0.000 2750940 Date#iso8601 + 0.95 0.511 0.511 0.000 0.000 1500000 Hash#[] + 0.88 0.472 0.472 0.000 0.000 6501880 String#== + 0.79 0.427 0.427 0.000 0.000 5501880 String#to_i + 0.74 0.402 0.402 0.000 0.000 5568523 Date#<=> + 0.70 0.376 0.376 0.000 0.000 2075737 String#=~ + 0.69 1.081 0.370 0.000 0.711 500000 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 0.59 0.708 0.317 0.000 0.390 500000 Array#any? + 0.59 0.317 0.317 0.000 0.000 992466 Hash#[]= + 0.56 0.303 0.303 0.000 0.000 500000 Array#reverse + 0.54 0.292 0.292 0.000 0.000 3750940 Array#<< + 0.46 0.250 0.250 0.000 0.000 3500000 User#sessions + 0.42 0.229 0.229 0.000 0.000 2000000 String#+ + 0.33 0.179 0.179 0.000 0.000 2750940 Integer#div + 0.30 0.339 0.164 0.000 0.175 500000 Array#all? + 0.19 0.102 0.102 0.000 0.000 1000000 Integer#to_s + 0.17 0.094 0.094 0.000 0.000 1 #read + 0.15 0.082 0.082 0.000 0.000 500000 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.14 0.076 0.076 0.000 0.000 1000000 User#attributes + 0.10 0.053 0.053 0.000 0.000 1 #write + 0.09 0.048 0.048 0.000 0.000 500000 Array#sum + 0.08 0.045 0.045 0.000 0.000 500000 Array#max + 0.07 0.036 0.036 0.000 0.000 500003 Array#count + 0.05 53.849 0.029 0.000 53.820 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 53.943 0.000 0.000 53.943 1 [global]# profilling.rb:10 + 0.00 29.548 0.000 0.000 29.548 1 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.956 0.000 0.000 0.956 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/flat/flat10000_8.txt b/reports/flat/flat10000_8.txt new file mode 100644 index 00000000..de22e636 --- /dev/null +++ b/reports/flat/flat10000_8.txt @@ -0,0 +1,67 @@ +Measure Mode: wall_time +Thread ID: 260 +Fiber ID: 240 +Total: 4.367467 +Sort by: self_time + + %self total self wait child calls name location + 22.03 3.898 0.962 0.000 2.936 76937 *Array#each + 15.16 0.662 0.662 0.000 0.000 1000001 String#split + 11.33 0.522 0.495 0.000 0.027 423067 #strptime + 7.67 1.046 0.335 0.000 0.712 153868 Array#map + 6.92 0.696 0.302 0.000 0.394 423067 Object#parse_session /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:27 + 4.57 0.199 0.199 0.000 0.000 3423067 Array#[] + 2.96 0.129 0.129 0.000 0.000 153867 Array#sort + 2.94 0.128 0.128 0.000 0.000 1165978 String#upcase + 2.21 0.128 0.097 0.000 0.031 76933 Array#sum + 2.19 0.096 0.096 0.000 0.000 1 JSON::Ext::Generator::GeneratorMethods::Hash#to_json + 2.01 0.088 0.088 0.000 0.000 423067 Date#iso8601 + 1.88 0.082 0.082 0.000 0.000 2 Array#uniq + 1.73 0.076 0.076 0.000 0.000 1000000 String#== + 1.60 0.070 0.070 0.000 0.000 76933 Hash#merge + 1.39 0.061 0.061 0.000 0.000 846134 String#to_i + 1.38 0.060 0.060 0.000 0.000 319844 String#=~ + 1.23 0.114 0.054 0.000 0.060 76933 Array#any? + 1.13 0.111 0.049 0.000 0.062 76933 Object#parse_user /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:17 + 1.12 0.049 0.049 0.000 0.000 230799 Hash#[] + 1.04 0.046 0.046 0.000 0.000 576933 Array#<< + 0.98 0.043 0.043 0.000 0.000 76934 Array#join + 0.93 0.041 0.041 0.000 0.000 153682 Hash#[]= + 0.86 0.051 0.038 0.000 0.013 76933 Class#new + 0.74 0.032 0.032 0.000 0.000 538531 User#sessions + 0.71 0.031 0.031 0.000 0.000 307732 String#+ + 0.62 0.027 0.027 0.000 0.000 423067 Integer#div + 0.60 0.053 0.026 0.000 0.027 76933 Array#all? + 0.43 0.019 0.019 0.000 0.000 76933 Array#reverse + 0.30 0.013 0.013 0.000 0.000 76933 User#initialize /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:11 + 0.30 0.112 0.013 0.000 0.099 76933 Enumerable#max_by + 0.25 0.011 0.011 0.000 0.000 153866 User#attributes + 0.17 0.007 0.007 0.000 0.000 1 #write + 0.17 0.007 0.007 0.000 0.000 76933 Integer#to_s + 0.15 0.007 0.007 0.000 0.000 1 #read + 0.13 0.006 0.006 0.000 0.000 76936 Array#count + 0.12 0.005 0.005 0.000 0.000 76933 String#to_s + 0.06 4.361 0.003 0.000 4.358 1 Object#work /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:46 + 0.00 4.367 0.000 0.000 4.367 1 [global]# profilling.rb:10 + 0.00 1.944 0.000 0.000 1.944 1 Object#collect_stats_from_users /Users/aiufrolov/Desktop/optimization_rails/rails-optimization-task1/task-1.rb:38 + 0.00 0.094 0.000 0.000 0.094 1 Enumerable#group_by + 0.00 0.000 0.000 0.000 0.000 1 JSON::Ext::Generator::State#initialize + +* 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/reports/graph/graph10000_1.html b/reports/graph/graph10000_1.html new file mode 100644 index 00000000..818d9e80 --- /dev/null +++ b/reports/graph/graph10000_1.html @@ -0,0 +1,3359 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Friday, May 17 at 3:16:57 PM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602403.068025817978196
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%3.070.000.003.071 + + [global]# + + 10
  3.070.000.003.071/1Object#work10 +
  0.000.000.000.001/1<Class::IO>#read10 +
  3.070.000.003.071/1[global]#10
99.92%0.00%3.070.000.003.071 + + Object#work + + 46
  2.980.010.002.973/10Array#each52 +
  0.070.000.000.077/7Object#collect_stats_from_users109 +
  0.000.000.000.001/1<Class::IO>#write143 +
  0.000.000.000.002/16898Array#map88 +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json143 +
  0.000.000.000.001/20001String#split47 +
  0.000.000.000.001/3073Array#sort88 +
  0.000.000.000.001/1Array#uniq88 +
  0.000.000.000.001/1537Array#join88 +
  0.000.000.000.003/1539Array#count75 +
  0.000.000.000.001/12289Hash#[]=75 +
  0.070.020.000.067/10Object#collect_stats_from_users39
  2.980.010.002.973/10Object#work52
99.57%0.94%3.050.030.003.0310 + + Array#each + +
  2.621.920.000.701536/1536Array#select101 +
  0.280.110.000.1710000/10000Array#all?81 +
  0.040.040.000.0011736/11736Array#+54 +
  0.040.010.000.0316896/16898Array#map115 +
  0.010.010.000.018464/8464Object#parse_session55 +
  0.000.000.000.0010000/20001String#split53 +
  0.000.000.000.003072/3073Array#sort125 +
  0.000.000.000.0021504/21504Hash#[]41 +
  0.000.000.000.0024576/24576String#+40 +
  0.000.000.000.001536/1536Object#parse_user54 +
  0.000.000.000.001536/1536Array#any?130 +
  0.000.000.000.0010752/10752Hash#merge110 +
  0.000.000.000.0020000/13861980String#==54 +
  0.000.000.000.0012288/12289Hash#[]=41 +
  0.000.000.000.001536/1536Class#new102 +
  0.000.000.000.0021504/21504User#attributes40 +
  0.000.000.000.0020000/68464Array#[]54 +
  0.000.000.000.0010752/10752User#sessions110 +
  0.000.000.000.001536/1537Array#join125 +
  0.000.000.000.003072/3072Integer#to_s115 +
  0.000.000.000.001536/1536Array#reverse140 +
  0.000.000.000.001536/1536Array#sum115 +
  0.000.000.000.001536/1536Array#max120 +
  0.000.000.000.001536/1539Array#count110 +
  2.621.920.000.701536/1536Array#each
85.36%62.66%2.621.920.000.701536 + + Array#select + +
  0.700.700.000.0013000704/13861980String#==101 +
  0.000.000.000.0020000/13861980Array#each
  0.060.060.000.00841276/13861980BasicObject#!=
  0.700.700.000.0013000704/13861980Array#select
24.67%24.67%0.760.760.000.0013861980 + + String#== + +
  0.280.110.000.1710000/10000Array#each
9.09%3.62%0.280.110.000.1710000 + + Array#all? + +
  0.170.110.000.06841276/841276BasicObject#!=81 +
  0.000.000.000.001979/6471String#=~135 +
  0.000.000.000.001979/23399String#upcase135 +
  0.170.110.000.06841276/841276Array#all?
5.46%3.55%0.170.110.000.06841276 + + BasicObject#!= + +
  0.060.060.000.00841276/13861980String#== +
  0.070.000.000.077/7Object#work109
2.43%0.00%0.070.000.000.077 + + Object#collect_stats_from_users + + 38
  0.070.020.000.067/10Array#each39 +
  0.040.040.000.0011736/11736Array#each
1.44%1.44%0.040.040.000.0011736 + + Array#+ + +
  0.000.000.000.002/16898Object#work88
  0.040.010.000.0316896/16898Array#each
1.42%0.54%0.040.020.000.0316898 + + Array#map + +
  0.020.010.000.018464/8464<Class::Date>#parse140 +
  0.000.000.000.008464/8464Date#iso8601140 +
  0.000.000.000.0016928/23399String#upcase91 +
  0.000.000.000.0016928/16928String#to_i115 +
  0.020.010.000.018464/8464Array#map
0.73%0.37%0.020.010.000.018464 + + <Class::Date>#parse + +
  0.000.000.000.0016928/16928Regexp#match +
  0.000.000.000.008464/8464String#gsub! +
  0.000.000.000.008464/8464MatchData#begin +
  0.000.000.000.008464/8464String#[]= +
  0.000.000.000.008464/8464Integer#div +
  0.000.000.000.008464/8464MatchData#end +
  0.010.010.000.018464/8464Array#each
0.45%0.23%0.010.010.000.018464 + + Object#parse_session + + 27
  0.000.000.000.008464/20001String#split28 +
  0.000.000.000.0042320/68464Array#[]30 +
  0.000.000.000.001536/20001Object#parse_user18
  0.000.000.000.001/20001Object#work47
  0.000.000.000.008464/20001Object#parse_session28
  0.000.000.000.0010000/20001Array#each
0.34%0.34%0.010.010.000.0020001 + + String#split + +
  0.000.000.000.006144/68464Object#parse_user20
  0.000.000.000.0020000/68464Array#each
  0.000.000.000.0042320/68464Object#parse_session30
0.16%0.16%0.000.000.000.0068464 + + Array#[] + +
  0.000.000.000.001/3073Object#work88
  0.000.000.000.003072/3073Array#each
0.13%0.09%0.000.000.000.003073 + + Array#sort + +
  0.000.000.000.0017169/17169Date#<=> +
  0.000.000.000.0016928/16928<Class::Date>#parse
0.12%0.12%0.000.000.000.0016928 + + Regexp#match + +
  0.000.000.000.001/1Object#work143
0.11%0.11%0.000.000.000.001 + + <Class::IO>#write + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.11%0.11%0.000.000.000.008464 + + String#gsub! + +
  0.000.000.000.0021504/21504Array#each
0.09%0.09%0.000.000.000.0021504 + + Hash#[] + +
  0.000.000.000.0024576/24576Array#each
0.08%0.08%0.000.000.000.0024576 + + String#+ + +
  0.000.000.000.001/1[global]#10
0.08%0.08%0.000.000.000.001 + + <Class::IO>#read + +
  0.000.000.000.001536/1536Array#each
0.07%0.04%0.000.000.000.001536 + + Object#parse_user + + 17
  0.000.000.000.001536/20001String#split18 +
  0.000.000.000.006144/68464Array#[]20 +
  0.000.000.000.001/1Object#work143
0.07%0.07%0.000.000.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.000.000.000.001979/23399Array#all?
  0.000.000.000.004492/23399Array#any?
  0.000.000.000.0016928/23399Array#map
0.07%0.07%0.000.000.000.0023399 + + String#upcase + +
  0.000.000.000.001536/1536Array#each
0.07%0.03%0.000.000.000.001536 + + Array#any? + +
  0.000.000.000.004492/6471String#=~130 +
  0.000.000.000.004492/23399String#upcase130 +
  0.000.000.000.008464/8464<Class::Date>#parse
0.06%0.06%0.000.000.000.008464 + + MatchData#begin + +
  0.000.000.000.0010752/10752Array#each
0.06%0.06%0.000.000.000.0010752 + + Hash#merge + +
  0.000.000.000.001/12289Object#work75
  0.000.000.000.0012288/12289Array#each
0.06%0.06%0.000.000.000.0012289 + + Hash#[]= + +
  0.000.000.000.008464/8464Array#map
0.06%0.06%0.000.000.000.008464 + + Date#iso8601 + +
  0.000.000.000.001536/1536Array#each
0.05%0.04%0.000.000.000.001536 + + Class#new + +
  0.000.000.000.001536/1536User#initialize +
  0.000.000.000.0021504/21504Array#each
0.05%0.05%0.000.000.000.0021504 + + User#attributes + +
  0.000.000.000.0016928/16928Array#map
0.04%0.04%0.000.000.000.0016928 + + String#to_i + +
  0.000.000.000.0017169/17169Array#sort
0.04%0.04%0.000.000.000.0017169 + + Date#<=> + +
  0.000.000.000.001979/6471Array#all?
  0.000.000.000.004492/6471Array#any?
0.03%0.03%0.000.000.000.006471 + + String#=~ + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.03%0.03%0.000.000.000.008464 + + String#[]= + +
  0.000.000.000.0010752/10752Array#each
0.02%0.02%0.000.000.000.0010752 + + User#sessions + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.02%0.02%0.000.000.000.008464 + + MatchData#end + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.02%0.02%0.000.000.000.008464 + + Integer#div + +
  0.000.000.000.001/1537Object#work88
  0.000.000.000.001536/1537Array#each
0.02%0.02%0.000.000.000.001537 + + Array#join + +
  0.000.000.000.001536/1536Class#new
0.01%0.01%0.000.000.000.001536 + + User#initialize + + 11
  0.000.000.000.001/1Object#work88
0.01%0.01%0.000.000.000.001 + + Array#uniq + +
  0.000.000.000.003072/3072Array#each
0.01%0.01%0.000.000.000.003072 + + Integer#to_s + +
  0.000.000.000.003/1539Object#work75
  0.000.000.000.001536/1539Array#each
0.00%0.00%0.000.000.000.001539 + + Array#count + +
  0.000.000.000.001536/1536Array#each
0.00%0.00%0.000.000.000.001536 + + Array#sum + +
  0.000.000.000.001536/1536Array#each
0.01%0.01%0.000.000.000.001536 + + Array#reverse + +
  0.000.000.000.001536/1536Array#each
0.00%0.00%0.000.000.000.001536 + + Array#max + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_2.html b/reports/graph/graph10000_2.html new file mode 100644 index 00000000..a9368172 --- /dev/null +++ b/reports/graph/graph10000_2.html @@ -0,0 +1,3359 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Friday, May 17 at 3:33:16 PM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602400.47954592196037993
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%0.480.000.000.481 + + [global]# + + 10
  0.480.000.000.481/1Object#work10 +
  0.000.000.000.001/1<Class::IO>#read10 +
  0.480.000.000.481/1[global]#10
99.82%0.03%0.480.000.000.481 + + Object#work + + 46
  0.390.010.000.383/11Array#each52 +
  0.070.000.000.077/7Object#collect_stats_from_users110 +
  0.000.000.000.002/16898Array#map88 +
  0.000.000.000.001/1<Class::IO>#write144 +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json144 +
  0.000.000.000.001/1Enumerable#group_by99 +
  0.000.000.000.001/3073Array#sort88 +
  0.000.000.000.001/20001String#split47 +
  0.000.000.000.001/1Array#uniq88 +
  0.000.000.000.001/1537Array#join88 +
  0.000.000.000.003/1539Array#count75 +
  0.000.000.000.001/12289Hash#[]=75 +
  0.000.000.000.001/11Enumerable#group_by
  0.070.020.000.067/11Object#collect_stats_from_users39
  0.390.010.000.383/11Object#work52
97.81%6.31%0.470.030.000.4411 + + Array#each + +
  0.290.120.000.1710000/10000Array#all?81 +
  0.070.070.000.0011736/11736Array#+54 +
  0.040.010.000.0316896/16898Array#map116 +
  0.010.010.000.018464/8464Object#parse_session55 +
  0.010.010.000.0010000/20001String#split53 +
  0.000.000.000.003072/3073Array#sort126 +
  0.000.000.000.0023040/23040Hash#[]103 +
  0.000.000.000.0024576/24576String#+40 +
  0.000.000.000.001536/1536Array#any?131 +
  0.000.000.000.001536/1536Object#parse_user54 +
  0.000.000.000.0010752/10752Hash#merge111 +
  0.000.000.000.0020000/861276String#==54 +
  0.000.000.000.0012288/12289Hash#[]=41 +
  0.000.000.000.0021504/21504User#attributes40 +
  0.000.000.000.0020000/68464Array#[]54 +
  0.000.000.000.0010752/10752User#sessions111 +
  0.000.000.000.001536/1536Class#new103 +
  0.000.000.000.001536/1537Array#join126 +
  0.000.000.000.003072/3072Integer#to_s116 +
  0.000.000.000.001536/1536Array#reverse141 +
  0.000.000.000.001536/1536Array#max121 +
  0.000.000.000.001536/1536Array#sum116 +
  0.000.000.000.001536/1539Array#count111 +
  0.290.120.000.1710000/10000Array#each
60.58%24.34%0.290.120.000.1710000 + + Array#all? + +
  0.170.110.000.06841276/841276BasicObject#!=81 +
  0.000.000.000.001979/6471String#=~136 +
  0.000.000.000.001979/23399String#upcase136 +
  0.170.110.000.06841276/841276Array#all?
36.14%23.50%0.170.110.000.06841276 + + BasicObject#!= + +
  0.060.060.000.00841276/861276String#== +
  0.070.000.000.077/7Object#work110
15.22%0.00%0.070.000.000.077 + + Object#collect_stats_from_users + + 38
  0.070.020.000.067/11Array#each39 +
  0.070.070.000.0011736/11736Array#each
14.01%14.01%0.070.070.000.0011736 + + Array#+ + +
  0.000.000.000.0020000/861276Array#each
  0.060.060.000.00841276/861276BasicObject#!=
12.97%12.97%0.060.060.000.00861276 + + String#== + +
  0.000.000.000.002/16898Object#work88
  0.040.010.000.0316896/16898Array#each
8.79%3.06%0.040.010.000.0316898 + + Array#map + +
  0.020.010.000.018464/8464<Class::Date>#parse141 +
  0.000.000.000.008464/8464Date#iso8601141 +
  0.000.000.000.0016928/23399String#upcase91 +
  0.000.000.000.0016928/16928String#to_i116 +
  0.020.010.000.018464/8464Array#map
4.75%2.36%0.020.010.000.018464 + + <Class::Date>#parse + +
  0.000.000.000.0016928/16928Regexp#match +
  0.000.000.000.008464/8464String#gsub! +
  0.000.000.000.008464/8464MatchData#begin +
  0.000.000.000.008464/8464String#[]= +
  0.000.000.000.008464/8464MatchData#end +
  0.000.000.000.008464/8464Integer#div +
  0.010.010.000.018464/8464Array#each
2.79%1.37%0.010.010.000.018464 + + Object#parse_session + + 27
  0.000.000.000.008464/20001String#split28 +
  0.000.000.000.0042320/68464Array#[]30 +
  0.000.000.000.001/20001Object#work47
  0.000.000.000.001536/20001Object#parse_user18
  0.000.000.000.008464/20001Object#parse_session28
  0.010.010.000.0010000/20001Array#each
2.17%2.17%0.010.010.000.0020001 + + String#split + +
  0.000.000.000.006144/68464Object#parse_user20
  0.000.000.000.0020000/68464Array#each
  0.000.000.000.0042320/68464Object#parse_session30
0.89%0.89%0.000.000.000.0068464 + + Array#[] + +
  0.000.000.000.001/3073Object#work88
  0.000.000.000.003072/3073Array#each
0.85%0.57%0.000.000.000.003073 + + Array#sort + +
  0.000.000.000.0017169/17169Date#<=> +
  0.000.000.000.0016928/16928<Class::Date>#parse
0.77%0.77%0.000.000.000.0016928 + + Regexp#match + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.73%0.73%0.000.000.000.008464 + + String#gsub! + +
  0.000.000.000.0023040/23040Array#each
0.62%0.62%0.000.000.000.0023040 + + Hash#[] + +
  0.000.000.000.001/1Object#work144
0.55%0.55%0.000.000.000.001 + + <Class::IO>#write + +
  0.000.000.000.0024576/24576Array#each
0.54%0.54%0.000.000.000.0024576 + + String#+ + +
  0.000.000.000.001536/1536Array#each
0.47%0.23%0.000.000.000.001536 + + Array#any? + +
  0.000.000.000.004492/6471String#=~131 +
  0.000.000.000.004492/23399String#upcase131 +
  0.000.000.000.001979/23399Array#all?
  0.000.000.000.004492/23399Array#any?
  0.000.000.000.0016928/23399Array#map
0.44%0.44%0.000.000.000.0023399 + + String#upcase + +
  0.000.000.000.001536/1536Array#each
0.43%0.23%0.000.000.000.001536 + + Object#parse_user + + 17
  0.000.000.000.001536/20001String#split18 +
  0.000.000.000.006144/68464Array#[]20 +
  0.000.000.000.008464/8464<Class::Date>#parse
0.45%0.45%0.000.000.000.008464 + + MatchData#begin + +
  0.000.000.000.001/1Object#work144
0.38%0.38%0.000.000.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.000.000.000.0010752/10752Array#each
0.40%0.40%0.000.000.000.0010752 + + Hash#merge + +
  0.000.000.000.001/1Object#work99
0.38%0.00%0.000.000.000.001 + + Enumerable#group_by + +
  0.000.000.000.001/11Array#each +
  0.000.000.000.008464/8464Array#map
0.38%0.38%0.000.000.000.008464 + + Date#iso8601 + +
  0.000.000.000.001/12289Object#work75
  0.000.000.000.0012288/12289Array#each
0.34%0.34%0.000.000.000.0012289 + + Hash#[]= + +
  0.000.000.000.0021504/21504Array#each
0.30%0.30%0.000.000.000.0021504 + + User#attributes + +
  0.000.000.000.0016928/16928Array#map
0.27%0.27%0.000.000.000.0016928 + + String#to_i + +
  0.000.000.000.0017169/17169Array#sort
0.28%0.28%0.000.000.000.0017169 + + Date#<=> + +
  0.000.000.000.001979/6471Array#all?
  0.000.000.000.004492/6471Array#any?
0.23%0.23%0.000.000.000.006471 + + String#=~ + +
  0.000.000.000.001/1[global]#10
0.18%0.18%0.000.000.000.001 + + <Class::IO>#read + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.19%0.19%0.000.000.000.008464 + + String#[]= + +
  0.000.000.000.0010752/10752Array#each
0.17%0.17%0.000.000.000.0010752 + + User#sessions + +
  0.000.000.000.001536/1536Array#each
0.15%0.09%0.000.000.000.001536 + + Class#new + +
  0.000.000.000.001536/1536User#initialize +
  0.000.000.000.008464/8464<Class::Date>#parse
0.13%0.13%0.000.000.000.008464 + + MatchData#end + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.12%0.12%0.000.000.000.008464 + + Integer#div + +
  0.000.000.000.001/1537Object#work88
  0.000.000.000.001536/1537Array#each
0.10%0.10%0.000.000.000.001537 + + Array#join + +
  0.000.000.000.001/1Object#work88
0.05%0.05%0.000.000.000.001 + + Array#uniq + +
  0.000.000.000.001536/1536Class#new
0.06%0.06%0.000.000.000.001536 + + User#initialize + + 11
  0.000.000.000.003072/3072Array#each
0.07%0.07%0.000.000.000.003072 + + Integer#to_s + +
  0.000.000.000.003/1539Object#work75
  0.000.000.000.001536/1539Array#each
0.02%0.02%0.000.000.000.001539 + + Array#count + +
  0.000.000.000.001536/1536Array#each
0.03%0.03%0.000.000.000.001536 + + Array#sum + +
  0.000.000.000.001536/1536Array#each
0.03%0.03%0.000.000.000.001536 + + Array#reverse + +
  0.000.000.000.001536/1536Array#each
0.03%0.03%0.000.000.000.001536 + + Array#max + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_3.html b/reports/graph/graph10000_3.html new file mode 100644 index 00000000..1e57fb31 --- /dev/null +++ b/reports/graph/graph10000_3.html @@ -0,0 +1,3275 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Friday, May 17 at 7:34:07 PM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602400.19744124001590535
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%0.200.000.000.201 + + [global]# + + 10
  0.200.000.000.201/1Object#work10 +
  0.000.000.000.001/1<Class::IO>#read10 +
  0.200.000.000.201/1[global]#10
99.25%0.06%0.200.000.000.201 + + Object#work + + 46
  0.110.010.000.102/10Array#each52 +
  0.080.000.000.087/7Object#collect_stats_from_users106 +
  0.000.000.000.003/16899Array#map78 +
  0.000.000.000.001/1Enumerable#group_by95 +
  0.000.000.000.002/2Array#uniq78 +
  0.000.000.000.001/1<Class::IO>#write140 +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json140 +
  0.000.000.000.001/3073Array#sort84 +
  0.000.000.000.001/20001String#split47 +
  0.000.000.000.003/1539Array#count75 +
  0.000.000.000.001/1537Array#join84 +
  0.000.000.000.001/12289Hash#[]=75 +
  0.000.000.000.001/10Enumerable#group_by
  0.080.020.000.067/10Object#collect_stats_from_users39
  0.110.010.000.102/10Object#work52
93.36%14.65%0.180.030.000.1610 + + Array#each + +
  0.070.070.000.0011536/11536Array#+54 +
  0.040.010.000.0316896/16899Array#map112 +
  0.010.010.000.018464/8464Object#parse_session55 +
  0.010.010.000.0010000/20001String#split53 +
  0.000.000.000.0023040/23040Hash#[]99 +
  0.000.000.000.003072/3073Array#sort122 +
  0.000.000.000.0024576/24576String#+40 +
  0.000.000.000.001536/1536Object#parse_user54 +
  0.000.000.000.001536/1536Array#any?127 +
  0.000.000.000.0010752/10752Hash#merge107 +
  0.000.000.000.0012288/12289Hash#[]=41 +
  0.000.000.000.0020000/20000String#==54 +
  0.000.000.000.0021504/21504User#attributes40 +
  0.000.000.000.0020000/68464Array#[]54 +
  0.000.000.000.001536/1536Array#all?132 +
  0.000.000.000.0010752/10752User#sessions107 +
  0.000.000.000.001536/1536Class#new99 +
  0.000.000.000.001536/1537Array#join122 +
  0.000.000.000.003072/3072Integer#to_s112 +
  0.000.000.000.001536/1536Array#reverse137 +
  0.000.000.000.001536/1536Array#sum112 +
  0.000.000.000.001536/1536Array#max117 +
  0.000.000.000.001536/1539Array#count107 +
  0.080.000.000.087/7Object#work106
38.01%0.00%0.080.000.000.087 + + Object#collect_stats_from_users + + 38
  0.080.020.000.067/10Array#each39 +
  0.070.070.000.0011536/11536Array#each
35.87%35.87%0.070.070.000.0011536 + + Array#+ + +
  0.000.000.000.003/16899Object#work78
  0.040.010.000.0316896/16899Array#each
22.03%8.09%0.040.020.000.0316899 + + Array#map + +
  0.020.010.000.018464/8464<Class::Date>#parse137 +
  0.000.000.000.008464/8464Date#iso8601137 +
  0.000.000.000.0016928/23399String#upcase87 +
  0.000.000.000.0016928/16928String#to_i112 +
  0.020.010.000.018464/8464Array#map
11.62%5.78%0.020.010.000.018464 + + <Class::Date>#parse + +
  0.000.000.000.0016928/16928Regexp#match +
  0.000.000.000.008464/8464String#gsub! +
  0.000.000.000.008464/8464MatchData#begin +
  0.000.000.000.008464/8464String#[]= +
  0.000.000.000.008464/8464MatchData#end +
  0.000.000.000.008464/8464Integer#div +
  0.010.010.000.018464/8464Array#each
7.04%3.27%0.010.010.000.018464 + + Object#parse_session + + 27
  0.000.000.000.008464/20001String#split28 +
  0.000.000.000.0042320/68464Array#[]30 +
  0.000.000.000.001/20001Object#work47
  0.000.000.000.001536/20001Object#parse_user18
  0.000.000.000.008464/20001Object#parse_session28
  0.010.010.000.0010000/20001Array#each
5.89%5.89%0.010.010.000.0020001 + + String#split + +
  0.000.000.000.006144/68464Object#parse_user20
  0.000.000.000.0020000/68464Array#each
  0.000.000.000.0042320/68464Object#parse_session30
2.25%2.25%0.000.000.000.0068464 + + Array#[] + +
  0.000.000.000.001/3073Object#work84
  0.000.000.000.003072/3073Array#each
2.04%1.41%0.000.000.000.003073 + + Array#sort + +
  0.000.000.000.0017169/17169Date#<=> +
  0.000.000.000.0016928/16928<Class::Date>#parse
1.87%1.87%0.000.000.000.0016928 + + Regexp#match + +
  0.000.000.000.008464/8464<Class::Date>#parse
1.79%1.79%0.000.000.000.008464 + + String#gsub! + +
  0.000.000.000.0023040/23040Array#each
1.73%1.73%0.000.000.000.0023040 + + Hash#[] + +
  0.000.000.000.0024576/24576Array#each
1.32%1.32%0.000.000.000.0024576 + + String#+ + +
  0.000.000.000.001/1Object#work95
1.13%0.00%0.000.000.000.001 + + Enumerable#group_by + +
  0.000.000.000.001/10Array#each +
  0.000.000.000.001979/23399Array#all?
  0.000.000.000.004492/23399Array#any?
  0.000.000.000.0016928/23399Array#map
1.11%1.11%0.000.000.000.0023399 + + String#upcase + +
  0.000.000.000.001536/1536Array#each
1.12%0.59%0.000.000.000.001536 + + Object#parse_user + + 17
  0.000.000.000.001536/20001String#split18 +
  0.000.000.000.006144/68464Array#[]20 +
  0.000.000.000.0010752/10752Array#each
1.05%1.05%0.000.000.000.0010752 + + Hash#merge + +
  0.000.000.000.001536/1536Array#each
1.09%0.52%0.000.000.000.001536 + + Array#any? + +
  0.000.000.000.004492/6471String#=~127 +
  0.000.000.000.004492/23399String#upcase127 +
  0.000.000.000.008464/8464<Class::Date>#parse
1.09%1.09%0.000.000.000.008464 + + MatchData#begin + +
  0.000.000.000.002/2Object#work78
1.03%1.03%0.000.000.000.002 + + Array#uniq + +
  0.000.000.000.001/1Object#work140
0.98%0.97%0.000.000.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.000.000.000.001/1Object#work140
1.00%1.00%0.000.000.000.001 + + <Class::IO>#write + +
  0.000.000.000.001/12289Object#work75
  0.000.000.000.0012288/12289Array#each
0.84%0.84%0.000.000.000.0012289 + + Hash#[]= + +
  0.000.000.000.0020000/20000Array#each
0.80%0.80%0.000.000.000.0020000 + + String#== + +
  0.000.000.000.008464/8464Array#map
0.84%0.84%0.000.000.000.008464 + + Date#iso8601 + +
  0.000.000.000.001/1[global]#10
0.75%0.75%0.000.000.000.001 + + <Class::IO>#read + +
  0.000.000.000.0021504/21504Array#each
0.76%0.76%0.000.000.000.0021504 + + User#attributes + +
  0.000.000.000.0016928/16928Array#map
0.67%0.67%0.000.000.000.0016928 + + String#to_i + +
  0.000.000.000.0017169/17169Array#sort
0.63%0.63%0.000.000.000.0017169 + + Date#<=> + +
  0.000.000.000.001536/1536Array#each
0.55%0.28%0.000.000.000.001536 + + Array#all? + +
  0.000.000.000.001979/6471String#=~132 +
  0.000.000.000.001979/23399String#upcase132 +
  0.000.000.000.001979/6471Array#all?
  0.000.000.000.004492/6471Array#any?
0.54%0.54%0.000.000.000.006471 + + String#=~ + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.47%0.47%0.000.000.000.008464 + + String#[]= + +
  0.000.000.000.001536/1536Array#each
0.36%0.23%0.000.000.000.001536 + + Class#new + +
  0.000.000.000.001536/1536User#initialize +
  0.000.000.000.0010752/10752Array#each
0.39%0.39%0.000.000.000.0010752 + + User#sessions + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.36%0.36%0.000.000.000.008464 + + MatchData#end + +
  0.000.000.000.001/1537Object#work84
  0.000.000.000.001536/1537Array#each
0.25%0.25%0.000.000.000.001537 + + Array#join + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.26%0.26%0.000.000.000.008464 + + Integer#div + +
  0.000.000.000.001536/1536Class#new
0.14%0.14%0.000.000.000.001536 + + User#initialize + + 11
  0.000.000.000.003072/3072Array#each
0.15%0.15%0.000.000.000.003072 + + Integer#to_s + +
  0.000.000.000.003/1539Object#work75
  0.000.000.000.001536/1539Array#each
0.07%0.07%0.000.000.000.001539 + + Array#count + +
  0.000.000.000.001536/1536Array#each
0.08%0.08%0.000.000.000.001536 + + Array#sum + +
  0.000.000.000.001536/1536Array#each
0.09%0.09%0.000.000.000.001536 + + Array#reverse + +
  0.000.000.000.001536/1536Array#each
0.07%0.07%0.000.000.000.001536 + + Array#max + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_4.html b/reports/graph/graph10000_4.html new file mode 100644 index 00000000..b2e80976 --- /dev/null +++ b/reports/graph/graph10000_4.html @@ -0,0 +1,3333 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Saturday, May 18 at 1:56:09 AM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602400.12459633499383926
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.01%0.120.000.000.121 + + [global]# + + 10
  0.120.000.000.121/1Object#work10 +
  0.000.000.000.001/1<Class::IO>#read10 +
  0.120.000.000.121/1[global]#10
97.79%0.11%0.120.000.000.121 + + Object#work + + 46
  0.070.000.000.077/7Object#collect_stats_from_users107 +
  0.040.010.000.032/10Array#each52 +
  0.000.000.000.003/16899Array#map79 +
  0.000.000.000.001/1<Class::IO>#write141 +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json141 +
  0.000.000.000.001/1Enumerable#group_by96 +
  0.000.000.000.002/2Array#uniq79 +
  0.000.000.000.001/3073Array#sort85 +
  0.000.000.000.001/20001String#split47 +
  0.000.000.000.001/1537Array#join85 +
  0.000.000.000.003/1539Array#count76 +
  0.000.000.000.001/12289Hash#[]=76 +
  0.000.000.000.001/10Enumerable#group_by
  0.040.010.000.032/10Object#work52
  0.070.020.000.067/10Object#collect_stats_from_users39
89.37%21.59%0.110.030.000.0810 + + Array#each + +
  0.040.010.000.0316896/16899Array#map113 +
  0.010.010.000.018464/8464Object#parse_session56 +
  0.000.000.000.0010000/20001String#split53 +
  0.000.000.000.003072/3073Array#sort123 +
  0.000.000.000.0023040/23040Hash#[]100 +
  0.000.000.000.0024576/24576String#+40 +
  0.000.000.000.001536/1536Object#parse_user55 +
  0.000.000.000.001536/1536Array#any?128 +
  0.000.000.000.0010752/10752Hash#merge108 +
  0.000.000.000.0020000/20000String#==55 +
  0.000.000.000.0012288/12289Hash#[]=41 +
  0.000.000.000.0021504/21504User#attributes40 +
  0.000.000.000.0020000/68464Array#[]55 +
  0.000.000.000.001536/1536Array#+101 +
  0.000.000.000.001536/1536Array#all?133 +
  0.000.000.000.0010000/10000Array#<<55 +
  0.000.000.000.0010752/10752User#sessions108 +
  0.000.000.000.001536/1536Class#new100 +
  0.000.000.000.001536/1537Array#join123 +
  0.000.000.000.003072/3072Integer#to_s113 +
  0.000.000.000.001536/1536Array#reverse138 +
  0.000.000.000.001536/1536Array#sum113 +
  0.000.000.000.001536/1536Array#max118 +
  0.000.000.000.001536/1539Array#count108 +
  0.070.000.000.077/7Object#work107
57.92%0.01%0.070.000.000.077 + + Object#collect_stats_from_users + + 38
  0.070.020.000.067/10Array#each39 +
  0.000.000.000.003/16899Object#work79
  0.040.010.000.0316896/16899Array#each
33.53%11.69%0.040.010.000.0316899 + + Array#map + +
  0.020.010.000.018464/8464<Class::Date>#parse138 +
  0.000.000.000.008464/8464Date#iso8601138 +
  0.000.000.000.0016928/23399String#upcase88 +
  0.000.000.000.0016928/16928String#to_i113 +
  0.020.010.000.018464/8464Array#map
18.06%8.95%0.020.010.000.018464 + + <Class::Date>#parse + +
  0.000.000.000.0016928/16928Regexp#match +
  0.000.000.000.008464/8464String#gsub! +
  0.000.000.000.008464/8464MatchData#begin +
  0.000.000.000.008464/8464String#[]= +
  0.000.000.000.008464/8464Integer#div +
  0.000.000.000.008464/8464MatchData#end +
  0.010.010.000.018464/8464Array#each
11.53%5.75%0.010.010.000.018464 + + Object#parse_session + + 27
  0.000.000.000.008464/20001String#split28 +
  0.000.000.000.0042320/68464Array#[]30 +
  0.000.000.000.001536/20001Object#parse_user18
  0.000.000.000.001/20001Object#work47
  0.000.000.000.008464/20001Object#parse_session28
  0.000.000.000.0010000/20001Array#each
8.00%8.00%0.010.010.000.0020001 + + String#split + +
  0.000.000.000.006144/68464Object#parse_user20
  0.000.000.000.0020000/68464Array#each
  0.000.000.000.0042320/68464Object#parse_session30
3.94%3.94%0.000.000.000.0068464 + + Array#[] + +
  0.000.000.000.001/3073Object#work85
  0.000.000.000.003072/3073Array#each
3.43%2.32%0.000.000.000.003073 + + Array#sort + +
  0.000.000.000.0017169/17169Date#<=> +
  0.000.000.000.0016928/16928<Class::Date>#parse
2.84%2.84%0.000.000.000.0016928 + + Regexp#match + +
  0.000.000.000.008464/8464<Class::Date>#parse
2.69%2.69%0.000.000.000.008464 + + String#gsub! + +
  0.000.000.000.0023040/23040Array#each
2.41%2.41%0.000.000.000.0023040 + + Hash#[] + +
  0.000.000.000.001/1[global]#10
2.20%2.20%0.000.000.000.001 + + <Class::IO>#read + +
  0.000.000.000.0024576/24576Array#each
2.03%2.03%0.000.000.000.0024576 + + String#+ + +
  0.000.000.000.001536/1536Array#each
1.80%0.92%0.000.000.000.001536 + + Object#parse_user + + 17
  0.000.000.000.001536/20001String#split18 +
  0.000.000.000.006144/68464Array#[]20 +
  0.000.000.000.001536/1536Array#each
1.72%0.82%0.000.000.000.001536 + + Array#any? + +
  0.000.000.000.004492/6471String#=~128 +
  0.000.000.000.004492/23399String#upcase128 +
  0.000.000.000.008464/8464<Class::Date>#parse
1.79%1.79%0.000.000.000.008464 + + MatchData#begin + +
  0.000.000.000.001979/23399Array#all?
  0.000.000.000.004492/23399Array#any?
  0.000.000.000.0016928/23399Array#map
1.68%1.68%0.000.000.000.0023399 + + String#upcase + +
  0.000.000.000.0010752/10752Array#each
1.66%1.66%0.000.000.000.0010752 + + Hash#merge + +
  0.000.000.000.001/1Object#work141
1.49%1.49%0.000.000.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.000.000.000.001/1Object#work96
1.48%0.00%0.000.000.000.001 + + Enumerable#group_by + +
  0.000.000.000.001/10Array#each +
  0.000.000.000.001/1Object#work141
1.52%1.52%0.000.000.000.001 + + <Class::IO>#write + +
  0.000.000.000.0020000/20000Array#each
1.47%1.47%0.000.000.000.0020000 + + String#== + +
  0.000.000.000.008464/8464Array#map
1.52%1.52%0.000.000.000.008464 + + Date#iso8601 + +
  0.000.000.000.001/12289Object#work76
  0.000.000.000.0012288/12289Array#each
1.29%1.29%0.000.000.000.0012289 + + Hash#[]= + +
  0.000.000.000.0021504/21504Array#each
1.25%1.25%0.000.000.000.0021504 + + User#attributes + +
  0.000.000.000.0016928/16928Array#map
1.04%1.04%0.000.000.000.0016928 + + String#to_i + +
  0.000.000.000.0017169/17169Array#sort
1.11%1.11%0.000.000.000.0017169 + + Date#<=> + +
  0.000.000.000.002/2Object#work79
0.95%0.95%0.000.000.000.002 + + Array#uniq + +
  0.000.000.000.0010000/10000Array#each
0.82%0.82%0.000.000.000.0010000 + + Array#<< + +
  0.000.000.000.001536/1536Array#each
0.90%0.90%0.000.000.000.001536 + + Array#+ + +
  0.000.000.000.001536/1536Array#each
0.84%0.43%0.000.000.000.001536 + + Array#all? + +
  0.000.000.000.001979/6471String#=~133 +
  0.000.000.000.001979/23399String#upcase133 +
  0.000.000.000.001979/6471Array#all?
  0.000.000.000.004492/6471Array#any?
0.85%0.85%0.000.000.000.006471 + + String#=~ + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.74%0.74%0.000.000.000.008464 + + String#[]= + +
  0.000.000.000.0010752/10752Array#each
0.61%0.61%0.000.000.000.0010752 + + User#sessions + +
  0.000.000.000.001536/1536Array#each
0.51%0.30%0.000.000.000.001536 + + Class#new + +
  0.000.000.000.001536/1536User#initialize +
  0.000.000.000.008464/8464<Class::Date>#parse
0.52%0.52%0.000.000.000.008464 + + MatchData#end + +
  0.000.000.000.008464/8464<Class::Date>#parse
0.53%0.53%0.000.000.000.008464 + + Integer#div + +
  0.000.000.000.001/1537Object#work85
  0.000.000.000.001536/1537Array#each
0.40%0.40%0.000.000.000.001537 + + Array#join + +
  0.000.000.000.001536/1536Class#new
0.20%0.20%0.000.000.000.001536 + + User#initialize + + 11
  0.000.000.000.003072/3072Array#each
0.24%0.24%0.000.000.000.003072 + + Integer#to_s + +
  0.000.000.000.003/1539Object#work76
  0.000.000.000.001536/1539Array#each
0.08%0.08%0.000.000.000.001539 + + Array#count + +
  0.000.000.000.001536/1536Array#each
0.11%0.11%0.000.000.000.001536 + + Array#sum + +
  0.000.000.000.001536/1536Array#each
0.12%0.12%0.000.000.000.001536 + + Array#reverse + +
  0.000.000.000.001536/1536Array#each
0.10%0.10%0.000.000.000.001536 + + Array#max + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_5.html b/reports/graph/graph10000_5.html new file mode 100644 index 00000000..e4f88363 --- /dev/null +++ b/reports/graph/graph10000_5.html @@ -0,0 +1,3043 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Saturday, May 18 at 2:19:12 AM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
26024010.738258011988364
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%10.740.000.0010.741 + + [global]# + + 10
  10.730.000.0010.721/1Object#work10 +
  0.010.010.000.001/1<Class::IO>#read10 +
  10.730.000.0010.721/1[global]#10
99.88%0.03%10.730.000.0010.721 + + Object#work + + 46
  6.040.560.005.492/10Array#each52 +
  4.070.000.004.077/7Object#collect_stats_from_users107 +
  0.210.150.000.063/846266Array#map79 +
  0.120.120.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json141 +
  0.100.100.000.002/2Array#uniq79 +
  0.100.000.000.101/1Enumerable#group_by96 +
  0.040.040.000.001/153867Array#sort85 +
  0.030.030.000.001/1000001String#split47 +
  0.010.010.000.001/1<Class::IO>#write141 +
  0.000.000.000.001/76934Array#join85 +
  0.000.000.000.003/76936Array#count76 +
  0.000.000.000.001/615280Hash#[]=76 +
  0.100.100.000.001/10Enumerable#group_by
  4.071.180.002.887/10Object#collect_stats_from_users39
  6.040.560.005.492/10Object#work52
95.06%17.12%10.211.840.008.3710 + + Array#each + +
  3.943.940.000.0076933/76933Array#+101 +
  1.410.710.000.71846263/846266Array#map113 +
  0.670.290.000.38423067/423067Object#parse_session56 +
  0.430.430.000.001153995/1153995Hash#[]100 +
  0.420.420.000.00538531/538531Hash#merge108 +
  0.290.290.000.00500000/1000001String#split53 +
  0.200.140.000.06153866/153867Array#sort123 +
  0.130.130.000.001230928/1230928String#+40 +
  0.110.050.000.0676933/76933Array#any?128 +
  0.110.050.000.0676933/76933Object#parse_user55 +
  0.100.080.000.0276933/76933Class#new100 +
  0.090.090.000.00615279/615280Hash#[]=41 +
  0.080.080.000.001077062/1077062User#attributes40 +
  0.070.070.000.001000000/1000000String#==55 +
  0.060.060.000.001000000/3423067Array#[]55 +
  0.050.050.000.0076933/76934Array#join123 +
  0.050.020.000.0376933/76933Array#all?133 +
  0.050.050.000.00538531/538531User#sessions108 +
  0.040.040.000.00500000/500000Array#<<55 +
  0.020.020.000.0076933/76933Array#reverse138 +
  0.020.020.000.00153866/153866Integer#to_s113 +
  0.010.010.000.0076933/76933Array#sum113 +
  0.010.010.000.0076933/76933Array#max118 +
  0.010.010.000.0076933/76936Array#count108 +
  4.070.000.004.077/7Object#work107
37.88%0.00%4.070.000.004.077 + + Object#collect_stats_from_users + + 38
  4.071.180.002.887/10Array#each39 +
  3.943.940.000.0076933/76933Array#each
36.71%36.71%3.943.940.000.0076933 + + Array#+ + +
  0.210.150.000.063/846266Object#work79
  1.410.710.000.71846263/846266Array#each
15.16%7.97%1.630.860.000.77846266 + + Array#map + +
  0.530.500.000.03423067/423067<Class::Date>#strptime138 +
  0.090.090.000.00846134/1165978String#upcase88 +
  0.080.080.000.00423067/423067Date#iso8601138 +
  0.060.060.000.00846134/846134String#to_i113 +
  0.670.290.000.38423067/423067Array#each
6.27%2.74%0.670.290.000.38423067 + + Object#parse_session + + 27
  0.260.260.000.00423067/1000001String#split28 +
  0.120.120.000.002115335/3423067Array#[]30 +
  0.030.030.000.001/1000001Object#work47
  0.040.040.000.0076933/1000001Object#parse_user18
  0.260.260.000.00423067/1000001Object#parse_session28
  0.290.290.000.00500000/1000001Array#each
5.83%5.83%0.630.630.000.001000001 + + String#split + +
  0.530.500.000.03423067/423067Array#map
4.96%4.70%0.530.500.000.03423067 + + <Class::Date>#strptime + +
  0.030.030.000.00423067/423067Integer#div +
  0.430.430.000.001153995/1153995Array#each
4.03%4.03%0.430.430.000.001153995 + + Hash#[] + +
  0.420.420.000.00538531/538531Array#each
3.95%3.95%0.420.420.000.00538531 + + Hash#merge + +
  0.040.040.000.001/153867Object#work85
  0.200.140.000.06153866/153867Array#each
2.27%1.68%0.240.180.000.06153867 + + Array#sort + +
  0.060.060.000.00856548/856548Date#<=> +
  0.020.020.000.00307732/3423067Object#parse_user20
  0.060.060.000.001000000/3423067Array#each
  0.120.120.000.002115335/3423067Object#parse_session30
1.83%1.83%0.200.200.000.003423067 + + Array#[] + +
  0.130.130.000.001230928/1230928Array#each
1.21%1.21%0.130.130.000.001230928 + + String#+ + +
  0.010.010.000.0099150/1165978Array#all?
  0.020.020.000.00220694/1165978Array#any?
  0.090.090.000.00846134/1165978Array#map
1.14%1.14%0.120.120.000.001165978 + + String#upcase + +
  0.120.120.000.001/1Object#work141
1.11%1.11%0.120.120.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.110.050.000.0676933/76933Array#each
1.03%0.50%0.110.050.000.0676933 + + Array#any? + +
  0.040.040.000.00220694/319844String#=~128 +
  0.020.020.000.00220694/1165978String#upcase128 +
  0.110.050.000.0676933/76933Array#each
1.02%0.45%0.110.050.000.0676933 + + Object#parse_user + + 17
  0.040.040.000.0076933/1000001String#split18 +
  0.020.020.000.00307732/3423067Array#[]20 +
  0.100.100.000.002/2Object#work79
0.92%0.92%0.100.100.000.002 + + Array#uniq + +
  0.100.000.000.101/1Object#work96
0.91%0.00%0.100.000.000.101 + + Enumerable#group_by + +
  0.100.100.000.001/10Array#each +
  0.100.080.000.0276933/76933Array#each
0.89%0.73%0.100.080.000.0276933 + + Class#new + +
  0.020.020.000.0076933/76933User#initialize +
  0.000.000.000.001/615280Object#work76
  0.090.090.000.00615279/615280Array#each
0.86%0.86%0.090.090.000.00615280 + + Hash#[]= + +
  0.080.080.000.00423067/423067Array#map
0.75%0.75%0.080.080.000.00423067 + + Date#iso8601 + +
  0.080.080.000.001077062/1077062Array#each
0.71%0.71%0.080.080.000.001077062 + + User#attributes + +
  0.070.070.000.001000000/1000000Array#each
0.68%0.68%0.070.070.000.001000000 + + String#== + +
  0.060.060.000.00846134/846134Array#map
0.60%0.60%0.060.060.000.00846134 + + String#to_i + +
  0.060.060.000.00856548/856548Array#sort
0.58%0.58%0.060.060.000.00856548 + + Date#<=> + +
  0.020.020.000.0099150/319844Array#all?
  0.040.040.000.00220694/319844Array#any?
0.51%0.51%0.050.050.000.00319844 + + String#=~ + +
  0.000.000.000.001/76934Object#work85
  0.050.050.000.0076933/76934Array#each
0.47%0.47%0.050.050.000.0076934 + + Array#join + +
  0.050.020.000.0376933/76933Array#each
0.47%0.23%0.050.020.000.0376933 + + Array#all? + +
  0.020.020.000.0099150/319844String#=~133 +
  0.010.010.000.0099150/1165978String#upcase133 +
  0.050.050.000.00538531/538531Array#each
0.42%0.42%0.050.050.000.00538531 + + User#sessions + +
  0.040.040.000.00500000/500000Array#each
0.37%0.37%0.040.040.000.00500000 + + Array#<< + +
  0.030.030.000.00423067/423067<Class::Date>#strptime
0.26%0.26%0.030.030.000.00423067 + + Integer#div + +
  0.020.020.000.0076933/76933Array#each
0.20%0.20%0.020.020.000.0076933 + + Array#reverse + +
  0.020.020.000.0076933/76933Class#new
0.17%0.17%0.020.020.000.0076933 + + User#initialize + + 11
  0.020.020.000.00153866/153866Array#each
0.14%0.14%0.020.020.000.00153866 + + Integer#to_s + +
  0.010.010.000.001/1[global]#10
0.12%0.12%0.010.010.000.001 + + <Class::IO>#read + +
  0.010.010.000.001/1Object#work141
0.11%0.11%0.010.010.000.001 + + <Class::IO>#write + +
  0.010.010.000.0076933/76933Array#each
0.07%0.07%0.010.010.000.0076933 + + Array#sum + +
  0.000.000.000.003/76936Object#work76
  0.010.010.000.0076933/76936Array#each
0.06%0.06%0.010.010.000.0076936 + + Array#count + +
  0.010.010.000.0076933/76933Array#each
0.06%0.06%0.010.010.000.0076933 + + Array#max + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_6.html b/reports/graph/graph10000_6.html new file mode 100644 index 00000000..1a46d8d7 --- /dev/null +++ b/reports/graph/graph10000_6.html @@ -0,0 +1,2985 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Saturday, May 18 at 2:35:55 AM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602406.351709503971506
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%6.350.000.006.351 + + [global]# + + 10
  6.350.000.006.341/1Object#work10 +
  0.010.010.000.001/1<Class::IO>#read10 +
  6.350.000.006.341/1[global]#10
99.91%0.04%6.350.000.006.341 + + Object#work + + 46
  3.960.000.003.967/7Object#collect_stats_from_users107 +
  1.800.480.001.332/10Array#each52 +
  0.220.160.000.063/846266Array#map79 +
  0.100.100.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json141 +
  0.100.000.000.101/1Enumerable#group_by96 +
  0.090.090.000.002/2Array#uniq79 +
  0.040.040.000.001/153867Array#sort85 +
  0.030.030.000.001/1000001String#split47 +
  0.010.010.000.001/1<Class::IO>#write141 +
  0.000.000.000.001/76934Array#join85 +
  0.000.000.000.003/76936Array#count76 +
  0.000.000.000.001/615280Hash#[]=76 +
  0.100.100.000.001/10Enumerable#group_by
  1.800.480.001.332/10Object#work52
  3.961.120.002.847/10Object#collect_stats_from_users39
92.27%26.70%5.861.700.004.1610 + + Array#each + +
  1.410.710.000.71846263/846266Array#map113 +
  0.670.300.000.37423067/423067Object#parse_session56 +
  0.390.390.000.00538531/538531Hash#merge108 +
  0.300.300.000.00500000/1000001String#split53 +
  0.280.280.000.001153995/1153995Hash#[]100 +
  0.200.140.000.07153866/153867Array#sort123 +
  0.130.130.000.001230928/1230928String#+40 +
  0.110.050.000.0676933/76933Object#parse_user55 +
  0.110.050.000.0676933/76933Array#any?128 +
  0.080.080.000.00615279/615280Hash#[]=41 +
  0.070.070.000.001077062/1077062User#attributes40 +
  0.070.070.000.001000000/1000000String#==55 +
  0.060.060.000.001000000/3423067Array#[]55 +
  0.050.030.000.0376933/76933Array#all?133 +
  0.050.050.000.0076933/76934Array#join123 +
  0.050.030.000.0176933/76933Class#new100 +
  0.050.050.000.00576933/576933Array#<<55 +
  0.040.040.000.00538531/538531User#sessions108 +
  0.020.020.000.0076933/76933Array#reverse138 +
  0.010.010.000.00153866/153866Integer#to_s113 +
  0.010.010.000.0076933/76933Array#sum113 +
  0.010.010.000.0076933/76933Array#max118 +
  0.010.010.000.0076933/76936Array#count108 +
  3.960.000.003.967/7Object#work107
62.34%0.00%3.960.000.003.967 + + Object#collect_stats_from_users + + 38
  3.961.120.002.847/10Array#each39 +
  0.220.160.000.063/846266Object#work79
  1.410.710.000.71846263/846266Array#each
25.66%13.62%1.630.870.000.76846266 + + Array#map + +
  0.520.490.000.03423067/423067<Class::Date>#strptime138 +
  0.090.090.000.00846134/1165978String#upcase88 +
  0.090.090.000.00423067/423067Date#iso8601138 +
  0.060.060.000.00846134/846134String#to_i113 +
  0.670.300.000.37423067/423067Array#each
10.55%4.69%0.670.300.000.37423067 + + Object#parse_session + + 27
  0.250.250.000.00423067/1000001String#split28 +
  0.120.120.000.002115335/3423067Array#[]30 +
  0.030.030.000.001/1000001Object#work47
  0.040.040.000.0076933/1000001Object#parse_user18
  0.250.250.000.00423067/1000001Object#parse_session28
  0.300.300.000.00500000/1000001Array#each
9.86%9.86%0.630.630.000.001000001 + + String#split + +
  0.520.490.000.03423067/423067Array#map
8.20%7.73%0.520.490.000.03423067 + + <Class::Date>#strptime + +
  0.030.030.000.00423067/423067Integer#div +
  0.390.390.000.00538531/538531Array#each
6.08%6.08%0.390.390.000.00538531 + + Hash#merge + +
  0.280.280.000.001153995/1153995Array#each
4.35%4.35%0.280.280.000.001153995 + + Hash#[] + +
  0.040.040.000.001/153867Object#work85
  0.200.140.000.07153866/153867Array#each
3.80%2.75%0.240.170.000.07153867 + + Array#sort + +
  0.070.070.000.00856548/856548Date#<=> +
  0.020.020.000.00307732/3423067Object#parse_user20
  0.060.060.000.001000000/3423067Array#each
  0.120.120.000.002115335/3423067Object#parse_session30
3.12%3.12%0.200.200.000.003423067 + + Array#[] + +
  0.130.130.000.001230928/1230928Array#each
1.97%1.97%0.130.130.000.001230928 + + String#+ + +
  0.010.010.000.0099150/1165978Array#all?
  0.020.020.000.00220694/1165978Array#any?
  0.090.090.000.00846134/1165978Array#map
1.92%1.92%0.120.120.000.001165978 + + String#upcase + +
  0.110.050.000.0676933/76933Array#each
1.74%0.77%0.110.050.000.0676933 + + Object#parse_user + + 17
  0.040.040.000.0076933/1000001String#split18 +
  0.020.020.000.00307732/3423067Array#[]20 +
  0.110.050.000.0676933/76933Array#each
1.69%0.81%0.110.050.000.0676933 + + Array#any? + +
  0.040.040.000.00220694/319844String#=~128 +
  0.020.020.000.00220694/1165978String#upcase128 +
  0.100.100.000.001/1Object#work141
1.60%1.60%0.100.100.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.100.000.000.101/1Object#work96
1.53%0.00%0.100.000.000.101 + + Enumerable#group_by + +
  0.100.100.000.001/10Array#each +
  0.090.090.000.00423067/423067Array#map
1.36%1.36%0.090.090.000.00423067 + + Date#iso8601 + +
  0.090.090.000.002/2Object#work79
1.35%1.35%0.090.090.000.002 + + Array#uniq + +
  0.000.000.000.001/615280Object#work76
  0.080.080.000.00615279/615280Array#each
1.28%1.28%0.080.080.000.00615280 + + Hash#[]= + +
  0.070.070.000.001000000/1000000Array#each
1.17%1.17%0.070.070.000.001000000 + + String#== + +
  0.070.070.000.001077062/1077062Array#each
1.17%1.17%0.070.070.000.001077062 + + User#attributes + +
  0.070.070.000.00856548/856548Array#sort
1.05%1.05%0.070.070.000.00856548 + + Date#<=> + +
  0.060.060.000.00846134/846134Array#map
1.02%1.02%0.060.060.000.00846134 + + String#to_i + +
  0.020.020.000.0099150/319844Array#all?
  0.040.040.000.00220694/319844Array#any?
0.83%0.83%0.050.050.000.00319844 + + String#=~ + +
  0.050.030.000.0376933/76933Array#each
0.81%0.41%0.050.030.000.0376933 + + Array#all? + +
  0.020.020.000.0099150/319844String#=~133 +
  0.010.010.000.0099150/1165978String#upcase133 +
  0.000.000.000.001/76934Object#work85
  0.050.050.000.0076933/76934Array#each
0.75%0.75%0.050.050.000.0076934 + + Array#join + +
  0.050.030.000.0176933/76933Array#each
0.75%0.55%0.050.030.000.0176933 + + Class#new + +
  0.010.010.000.0076933/76933User#initialize +
  0.050.050.000.00576933/576933Array#each
0.72%0.72%0.050.050.000.00576933 + + Array#<< + +
  0.040.040.000.00538531/538531Array#each
0.66%0.66%0.040.040.000.00538531 + + User#sessions + +
  0.030.030.000.00423067/423067<Class::Date>#strptime
0.47%0.47%0.030.030.000.00423067 + + Integer#div + +
  0.020.020.000.0076933/76933Array#each
0.30%0.30%0.020.020.000.0076933 + + Array#reverse + +
  0.010.010.000.00153866/153866Array#each
0.21%0.21%0.010.010.000.00153866 + + Integer#to_s + +
  0.010.010.000.0076933/76933Class#new
0.20%0.20%0.010.010.000.0076933 + + User#initialize + + 11
  0.010.010.000.0076933/76933Array#each
0.12%0.12%0.010.010.000.0076933 + + Array#sum + +
  0.010.010.000.0076933/76933Array#each
0.10%0.10%0.010.010.000.0076933 + + Array#max + +
  0.010.010.000.001/1[global]#10
0.09%0.09%0.010.010.000.001 + + <Class::IO>#read + +
  0.000.000.000.003/76936Object#work76
  0.010.010.000.0076933/76936Array#each
0.09%0.09%0.010.010.000.0076936 + + Array#count + +
  0.010.010.000.001/1Object#work141
0.09%0.09%0.010.010.000.001 + + <Class::IO>#write + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_7.html b/reports/graph/graph10000_7.html new file mode 100644 index 00000000..a67d3ef6 --- /dev/null +++ b/reports/graph/graph10000_7.html @@ -0,0 +1,2985 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Sunday, May 19 at 4:50:14 PM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
26024053.942823502002284
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%53.940.000.0053.941 + + [global]# + + 10
  53.850.030.0053.821/1Object#work10 +
  0.090.090.000.001/1<Class::IO>#read10 +
  53.850.030.0053.821/1[global]#10
99.83%0.05%53.850.030.0053.821 + + Object#work + + 46
  29.550.000.0029.551/1Object#collect_stats_from_users110 +
  18.484.560.0013.922/4Array#each52 +
  2.091.170.000.933/5500003Array#map79 +
  1.041.040.000.002/2Array#uniq79 +
  0.990.990.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json122 +
  0.960.000.000.961/1Enumerable#group_by96 +
  0.420.420.000.001/1000001Array#sort85 +
  0.240.240.000.001/6501881String#split47 +
  0.050.050.000.001/1<Class::IO>#write122 +
  0.000.000.000.001/500001Array#join85 +
  0.000.000.000.003/500003Array#count76 +
  0.000.000.000.001/992466Hash#[]=76 +
  0.960.960.000.001/4Enumerable#group_by
  18.484.560.0013.922/4Object#work52
  29.554.570.0024.981/4Object#collect_stats_from_users39
90.81%18.70%48.9810.090.0038.904 + + Array#each + +
  17.696.960.0010.735500000/5500003Array#map112 +
  6.552.210.004.342750940/2750940Object#parse_session56 +
  4.234.230.000.003250940/6501881String#split53 +
  2.151.750.000.401000000/1000001Array#sort112 +
  1.521.520.000.00500000/500000Hash#merge112 +
  1.080.370.000.71500000/500000Object#parse_user55 +
  0.870.870.000.00500000/500001Array#join112 +
  0.710.320.000.39500000/500000Array#any?112 +
  0.700.610.000.08500000/500000Class#new100 +
  0.510.510.000.001500000/1500000Hash#[]100 +
  0.470.470.000.006501880/6501880String#==55 +
  0.380.380.000.006501880/22256580Array#[]55 +
  0.340.160.000.18500000/500000Array#all?112 +
  0.320.320.000.00992465/992466Hash#[]=41 +
  0.300.300.000.00500000/500000Array#reverse112 +
  0.290.290.000.003750940/3750940Array#<<55 +
  0.250.250.000.003500000/3500000User#sessions112 +
  0.230.230.000.002000000/2000000String#+40 +
  0.100.100.000.001000000/1000000Integer#to_s112 +
  0.080.080.000.001000000/1000000User#attributes40 +
  0.050.050.000.00500000/500000Array#sum112 +
  0.050.050.000.00500000/500000Array#max112 +
  0.040.040.000.00500000/500003Array#count112 +
  29.550.000.0029.551/1Object#work110
54.78%0.00%29.550.000.0029.551 + + Object#collect_stats_from_users + + 38
  29.554.570.0024.981/4Array#each39 +
  2.091.170.000.933/5500003Object#work79
  17.696.960.0010.735500000/5500003Array#each
36.68%15.07%19.798.130.0011.665500003 + + Array#map + +
  9.529.340.000.182750940/2750940<Class::Date>#strptime118 +
  1.181.180.000.005501880/7577617String#upcase88 +
  0.540.540.000.002750940/2750940Date#iso8601118 +
  0.430.430.000.005501880/5501880String#to_i113 +
  9.529.340.000.182750940/2750940Array#map
17.64%17.31%9.529.340.000.182750940 + + <Class::Date>#strptime + +
  0.180.180.000.002750940/2750940Integer#div +
  0.240.240.000.001/6501881Object#work47
  0.600.600.000.00500000/6501881Object#parse_user18
  3.553.550.000.002750940/6501881Object#parse_session28
  4.234.230.000.003250940/6501881Array#each
15.98%15.98%8.628.620.000.006501881 + + String#split + +
  6.552.210.004.342750940/2750940Array#each
12.14%4.09%6.552.210.004.342750940 + + Object#parse_session + + 27
  3.553.550.000.002750940/6501881String#split28 +
  0.790.790.000.0013754700/22256580Array#[]30 +
  0.420.420.000.001/1000001Object#work85
  2.151.750.000.401000000/1000001Array#each
4.77%4.03%2.572.170.000.401000001 + + Array#sort + +
  0.400.400.000.005568523/5568523Date#<=> +
  1.521.520.000.00500000/500000Array#each
2.82%2.82%1.521.520.000.00500000 + + Hash#merge + +
  0.060.060.000.00643788/7577617Array#all?
  0.130.130.000.001431949/7577617Array#any?
  1.181.180.000.005501880/7577617Array#map
2.53%2.53%1.361.360.000.007577617 + + String#upcase + +
  0.110.110.000.002000000/22256580Object#parse_user20
  0.380.380.000.006501880/22256580Array#each
  0.790.790.000.0013754700/22256580Object#parse_session30
2.38%2.38%1.281.280.000.0022256580 + + Array#[] + +
  1.080.370.000.71500000/500000Array#each
2.00%0.69%1.080.370.000.71500000 + + Object#parse_user + + 17
  0.600.600.000.00500000/6501881String#split18 +
  0.110.110.000.002000000/22256580Array#[]20 +
  1.041.040.000.002/2Object#work79
1.93%1.93%1.041.040.000.002 + + Array#uniq + +
  0.990.990.000.001/1Object#work122
1.83%1.83%0.990.990.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.960.000.000.961/1Object#work96
1.77%0.00%0.960.000.000.961 + + Enumerable#group_by + +
  0.960.960.000.001/4Array#each +
  0.000.000.000.001/500001Object#work85
  0.870.870.000.00500000/500001Array#each
1.61%1.61%0.870.870.000.00500001 + + Array#join + +
  0.710.320.000.39500000/500000Array#each
1.31%0.59%0.710.320.000.39500000 + + Array#any? + +
  0.260.260.000.001431949/2075737String#=~116 +
  0.130.130.000.001431949/7577617String#upcase116 +
  0.700.610.000.08500000/500000Array#each
1.29%1.14%0.700.610.000.08500000 + + Class#new + +
  0.080.080.000.00500000/500000User#initialize +
  0.540.540.000.002750940/2750940Array#map
1.00%1.00%0.540.540.000.002750940 + + Date#iso8601 + +
  0.510.510.000.001500000/1500000Array#each
0.95%0.95%0.510.510.000.001500000 + + Hash#[] + +
  0.470.470.000.006501880/6501880Array#each
0.88%0.88%0.470.470.000.006501880 + + String#== + +
  0.430.430.000.005501880/5501880Array#map
0.79%0.79%0.430.430.000.005501880 + + String#to_i + +
  0.400.400.000.005568523/5568523Array#sort
0.74%0.74%0.400.400.000.005568523 + + Date#<=> + +
  0.120.120.000.00643788/2075737Array#all?
  0.260.260.000.001431949/2075737Array#any?
0.70%0.70%0.380.380.000.002075737 + + String#=~ + +
  0.340.160.000.18500000/500000Array#each
0.63%0.30%0.340.160.000.18500000 + + Array#all? + +
  0.120.120.000.00643788/2075737String#=~117 +
  0.060.060.000.00643788/7577617String#upcase117 +
  0.000.000.000.001/992466Object#work76
  0.320.320.000.00992465/992466Array#each
0.59%0.59%0.320.320.000.00992466 + + Hash#[]= + +
  0.300.300.000.00500000/500000Array#each
0.56%0.56%0.300.300.000.00500000 + + Array#reverse + +
  0.290.290.000.003750940/3750940Array#each
0.54%0.54%0.290.290.000.003750940 + + Array#<< + +
  0.250.250.000.003500000/3500000Array#each
0.46%0.46%0.250.250.000.003500000 + + User#sessions + +
  0.230.230.000.002000000/2000000Array#each
0.42%0.42%0.230.230.000.002000000 + + String#+ + +
  0.180.180.000.002750940/2750940<Class::Date>#strptime
0.33%0.33%0.180.180.000.002750940 + + Integer#div + +
  0.100.100.000.001000000/1000000Array#each
0.19%0.19%0.100.100.000.001000000 + + Integer#to_s + +
  0.090.090.000.001/1[global]#10
0.17%0.17%0.090.090.000.001 + + <Class::IO>#read + +
  0.080.080.000.00500000/500000Class#new
0.15%0.15%0.080.080.000.00500000 + + User#initialize + + 11
  0.080.080.000.001000000/1000000Array#each
0.14%0.14%0.080.080.000.001000000 + + User#attributes + +
  0.050.050.000.001/1Object#work122
0.10%0.10%0.050.050.000.001 + + <Class::IO>#write + +
  0.050.050.000.00500000/500000Array#each
0.09%0.09%0.050.050.000.00500000 + + Array#sum + +
  0.050.050.000.00500000/500000Array#each
0.08%0.08%0.050.050.000.00500000 + + Array#max + +
  0.000.000.000.003/500003Object#work76
  0.040.040.000.00500000/500003Array#each
0.07%0.07%0.040.040.000.00500003 + + Array#count + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/reports/graph/graph10000_8.html b/reports/graph/graph10000_8.html new file mode 100644 index 00000000..5ee8a030 --- /dev/null +++ b/reports/graph/graph10000_8.html @@ -0,0 +1,3037 @@ + + + + + + +
+
+
+
Profile Report
+

Wall_time

+
+
+
Tuesday, May 21 at 2:07:44 AM (MSK)
+ +
+
+
+
+ + + + + + + + + + + + + +
Thread IDFiber IDTotal
2602404.367466985015199
+ + + +

Thread 260, Fiber: 240

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%Total%SelfTotalSelfWaitChildCallsNameLine
100.00%0.00%4.370.000.004.371 + + [global]# + + 10
  4.360.000.004.361/1Object#work10 +
  0.010.010.000.001/1<Class::IO>#read10 +
  4.360.000.004.361/1[global]#10
99.85%0.06%4.360.000.004.361 + + Object#work + + 46
  1.940.000.001.941/1Object#collect_stats_from_users109 +
  1.860.480.001.382/76937Array#each52 +
  0.200.140.000.062/153868Array#map79 +
  0.100.100.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json121 +
  0.090.000.000.091/1Enumerable#group_by95 +
  0.080.080.000.002/2Array#uniq79 +
  0.040.040.000.001/153867Array#sort85 +
  0.030.030.000.001/1000001String#split47 +
  0.010.010.000.001/1<Class::IO>#write121 +
  0.000.000.000.001/76934Array#join85 +
  0.000.000.000.003/76936Array#count76 +
  0.000.000.000.001/153682Hash#[]=76 +
  0.090.090.000.001/76937Enumerable#group_by
  0.100.070.000.0376933/76937Enumerable#max_by
  1.860.480.001.382/76937Object#work52
  1.940.320.001.631/76937Object#collect_stats_from_users39
89.26%22.03%3.900.960.002.9476937 + + *Array#each + +
  0.840.200.000.65153866/153868Array#map111 +
  0.700.300.000.39423067/423067Object#parse_session56 +
  0.320.320.000.00500000/1000001String#split53 +
  0.130.100.000.0376933/76933Array#sum111 +
  0.110.050.000.0676933/76933Array#any?111 +
  0.110.010.000.1076933/76933Enumerable#max_by111 +
  0.110.050.000.0676933/76933Object#parse_user55 +
  0.090.090.000.00153866/153867Array#sort111 +
  0.080.080.000.001000000/1000000String#==55 +
  0.070.070.000.0076933/76933Hash#merge111 +
  0.060.060.000.001000000/3423067Array#[]55 +
  0.050.030.000.0376933/76933Array#all?111 +
  0.050.040.000.0176933/76933Class#new99 +
  0.050.050.000.00230799/230799Hash#[]99 +
  0.050.050.000.00576933/576933Array#<<55 +
  0.040.040.000.0076933/76934Array#join111 +
  0.040.040.000.00153681/153682Hash#[]=41 +
  0.030.030.000.00538531/538531User#sessions111 +
  0.030.030.000.00307732/307732String#+40 +
  0.030.030.000.00423067/846134String#to_i113 +
  0.020.020.000.0076933/76933Array#reverse111 +
  0.010.010.000.00153866/153866User#attributes40 +
  0.010.010.000.0076933/76933Integer#to_s111 +
  0.010.010.000.0076933/76936Array#count111 +
  0.010.010.000.0076933/76933String#to_s111 +
  1.940.000.001.941/1Object#work109
44.51%0.00%1.940.000.001.941 + + Object#collect_stats_from_users + + 38
  1.940.320.001.631/76937Array#each39 +
  0.200.140.000.062/153868Object#work79
  0.840.200.000.65153866/153868Array#each
23.96%7.67%1.050.330.000.71153868 + + Array#map + +
  0.520.490.000.03423067/423067<Class::Date>#strptime117 +
  0.100.100.000.00846134/1165978String#upcase87 +
  0.090.090.000.00423067/423067Date#iso8601117 +
  0.700.300.000.39423067/423067Array#each
15.94%6.92%0.700.300.000.39423067 + + Object#parse_session + + 27
  0.270.270.000.00423067/1000001String#split28 +
  0.120.120.000.002115335/3423067Array#[]30 +
  0.030.030.000.001/1000001Object#work47
  0.040.040.000.0076933/1000001Object#parse_user18
  0.270.270.000.00423067/1000001Object#parse_session28
  0.320.320.000.00500000/1000001Array#each
15.16%15.16%0.660.660.000.001000001 + + String#split + +
  0.520.490.000.03423067/423067Array#map
11.94%11.33%0.520.490.000.03423067 + + <Class::Date>#strptime + +
  0.030.030.000.00423067/423067Integer#div +
  0.020.020.000.00307732/3423067Object#parse_user20
  0.060.060.000.001000000/3423067Array#each
  0.120.120.000.002115335/3423067Object#parse_session30
4.57%4.57%0.200.200.000.003423067 + + Array#[] + +
  0.040.040.000.001/153867Object#work85
  0.090.090.000.00153866/153867Array#each
2.96%2.96%0.130.130.000.00153867 + + Array#sort + +
  0.010.010.000.0099150/1165978Array#all?
  0.020.020.000.00220694/1165978Array#any?
  0.100.100.000.00846134/1165978Array#map
2.94%2.94%0.130.130.000.001165978 + + String#upcase + +
  0.130.100.000.0376933/76933Array#each
2.93%2.21%0.130.100.000.0376933 + + Array#sum + +
  0.030.030.000.00423067/846134String#to_i112 +
  0.110.050.000.0676933/76933Array#each
2.60%1.23%0.110.050.000.0676933 + + Array#any? + +
  0.040.040.000.00220694/319844String#=~115 +
  0.020.020.000.00220694/1165978String#upcase115 +
  0.110.010.000.1076933/76933Array#each
2.56%0.30%0.110.010.000.1076933 + + Enumerable#max_by + +
  0.100.070.000.0376933/76937Array#each +
  0.110.050.000.0676933/76933Array#each
2.55%1.13%0.110.050.000.0676933 + + Object#parse_user + + 17
  0.040.040.000.0076933/1000001String#split18 +
  0.020.020.000.00307732/3423067Array#[]20 +
  0.100.100.000.001/1Object#work121
2.19%2.19%0.100.100.000.001 + + JSON::Ext::Generator::GeneratorMethods::Hash#to_json + +
  0.000.000.000.001/1JSON::Ext::Generator::State#initialize +
  0.090.000.000.091/1Object#work95
2.16%0.00%0.090.000.000.091 + + Enumerable#group_by + +
  0.090.090.000.001/76937Array#each +
  0.090.090.000.00423067/423067Array#map
2.01%2.01%0.090.090.000.00423067 + + Date#iso8601 + +
  0.080.080.000.002/2Object#work79
1.88%1.88%0.080.080.000.002 + + Array#uniq + +
  0.080.080.000.001000000/1000000Array#each
1.73%1.73%0.080.080.000.001000000 + + String#== + +
  0.070.070.000.0076933/76933Array#each
1.60%1.60%0.070.070.000.0076933 + + Hash#merge + +
  0.030.030.000.00423067/846134Array#each
  0.030.030.000.00423067/846134Array#sum
1.39%1.39%0.060.060.000.00846134 + + String#to_i + +
  0.020.020.000.0099150/319844Array#all?
  0.040.040.000.00220694/319844Array#any?
1.38%1.38%0.060.060.000.00319844 + + String#=~ + +
  0.050.030.000.0376933/76933Array#each
1.21%0.60%0.050.030.000.0376933 + + Array#all? + +
  0.020.020.000.0099150/319844String#=~116 +
  0.010.010.000.0099150/1165978String#upcase116 +
  0.050.040.000.0176933/76933Array#each
1.16%0.86%0.050.040.000.0176933 + + Class#new + +
  0.010.010.000.0076933/76933User#initialize +
  0.050.050.000.00230799/230799Array#each
1.12%1.12%0.050.050.000.00230799 + + Hash#[] + +
  0.050.050.000.00576933/576933Array#each
1.04%1.04%0.050.050.000.00576933 + + Array#<< + +
  0.000.000.000.001/76934Object#work85
  0.040.040.000.0076933/76934Array#each
0.98%0.98%0.040.040.000.0076934 + + Array#join + +
  0.000.000.000.001/153682Object#work76
  0.040.040.000.00153681/153682Array#each
0.93%0.93%0.040.040.000.00153682 + + Hash#[]= + +
  0.030.030.000.00538531/538531Array#each
0.74%0.74%0.030.030.000.00538531 + + User#sessions + +
  0.030.030.000.00307732/307732Array#each
0.71%0.71%0.030.030.000.00307732 + + String#+ + +
  0.030.030.000.00423067/423067<Class::Date>#strptime
0.62%0.62%0.030.030.000.00423067 + + Integer#div + +
  0.020.020.000.0076933/76933Array#each
0.43%0.43%0.020.020.000.0076933 + + Array#reverse + +
  0.010.010.000.0076933/76933Class#new
0.30%0.30%0.010.010.000.0076933 + + User#initialize + + 11
  0.010.010.000.00153866/153866Array#each
0.25%0.25%0.010.010.000.00153866 + + User#attributes + +
  0.010.010.000.001/1Object#work121
0.17%0.17%0.010.010.000.001 + + <Class::IO>#write + +
  0.010.010.000.0076933/76933Array#each
0.17%0.17%0.010.010.000.0076933 + + Integer#to_s + +
  0.010.010.000.001/1[global]#10
0.15%0.15%0.010.010.000.001 + + <Class::IO>#read + +
  0.000.000.000.003/76936Object#work76
  0.010.010.000.0076933/76936Array#each
0.13%0.13%0.010.010.000.0076936 + + Array#count + +
  0.010.010.000.0076933/76933Array#each
0.12%0.12%0.010.010.000.0076933 + + String#to_s + +
  0.000.000.000.001/1JSON::Ext::Generator::GeneratorMethods::Hash#to_json
0.00%0.00%0.000.000.000.001 + + JSON::Ext::Generator::State#initialize + +
* indicates recursively called methods
+ +
+ + + + diff --git a/task-1.rb b/task-1.rb index 778672df..a1982f47 100644 --- a/task-1.rb +++ b/task-1.rb @@ -43,16 +43,17 @@ def collect_stats_from_users(report, users_objects, &block) end end -def work - file_lines = File.read('data.txt').split("\n") +def work(file_name = File.read('data_large.txt')) + file_lines = file_name.split("\n") users = [] sessions = [] 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' + + users << parse_user(line) if cols[0] == 'user' + sessions << parse_session(line) if cols[0] == 'session' end # Отчёт в json @@ -75,11 +76,7 @@ def work report[:totalUsers] = users.count # Подсчёт количества уникальных браузеров - uniqueBrowsers = [] - sessions.each do |session| - browser = session['browser'] - uniqueBrowsers += [browser] if uniqueBrowsers.all? { |b| b != browser } - end + uniqueBrowsers = sessions.map { _1['browser'] }.uniq report['uniqueBrowsersCount'] = uniqueBrowsers.count @@ -87,8 +84,7 @@ def work report['allBrowsers'] = sessions - .map { |s| s['browser'] } - .map { |b| b.upcase } + .map { |s| s['browser'].upcase } .sort .uniq .join(',') @@ -96,48 +92,30 @@ def work # Статистика по пользователям users_objects = [] + user_sessions = sessions.group_by { |session| session['user_id'] } + 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] + user_object = User.new(attributes: attributes, sessions: user_sessions[user['id']]) + users_objects = users_objects << user_object end report['usersStats'] = {} - # Собираем количество сессий по пользователям + # Собираем количество сессий по пользователям: + # Собираем количество времени по пользователям, Выбираем самую длинную сессию пользователя, + # Браузеры пользователя через запятую, Хоть раз использовал IE?, + # Всегда использовал только Chrome?, Даты сессий через запятую в обратном порядке в формате iso8601 collect_stats_from_users(report, users_objects) do |user| - { 'sessionsCount' => user.sessions.count } - 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 - - # Выбираем самую длинную сессию пользователя - 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 - - # Браузеры пользователя через запятую - collect_stats_from_users(report, users_objects) do |user| - { 'browsers' => user.sessions.map {|s| s['browser']}.map {|b| b.upcase}.sort.join(', ') } - 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 - - # Всегда использовал только Chrome? - collect_stats_from_users(report, users_objects) do |user| - { 'alwaysUsedChrome' => user.sessions.map{|s| s['browser']}.all? { |b| b.upcase =~ /CHROME/ } } - end - - # Даты сессий через запятую в обратном порядке в формате 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 } } + { + 'sessionsCount' => user.sessions.count, + 'totalTime' => user.sessions.sum {|s| s['time'].to_i}.to_s + ' min.', + 'longestSession' => user.sessions.max_by {|s| s['time'].to_i}['time'].to_s + ' min.', + 'browsers' => user.sessions.map {|s| s['browser'].upcase}.sort.join(', '), + 'usedIE' => user.sessions.any?{|s| s['browser'].upcase =~ /INTERNET EXPLORER/ }, + 'alwaysUsedChrome' => user.sessions.all?{|s| s['browser'].upcase =~ /CHROME/}, + 'dates' => user.sessions.map{|s| Date.strptime(s['date']).iso8601 }.sort.reverse, + } end File.write('result.json', "#{report.to_json}\n") @@ -173,4 +151,14 @@ def test_result 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 + + def test_performance + start_time = Time.now + work + end_time = Time.now + + execution_time = end_time - start_time + puts execution_time + assert_operator execution_time, :<, 30 + end end