Как генерировать графики пламени для программы Ruby в Windows?
Ниже находится файл ruby profiler.rb,
требуют 'ruby-prof' требуют 'ruby-prof-flamegraph' # профиль код def func(n) temp = 0 n.times do |i| temp = temp * i + i ** i + i end end result = RubyProf.profile do func(1000) end # печатать профиль графика на текстовом принтере = RubyProf::FlameGraphPrinter.new(result) printer.print(STDOUT, {})
Когда я запускаю приведенную ниже команду в windows CMDER (консольный эмулятор), открывается файл flamegraph.pl (скачанный с https://github.com/brendangregg/FlameGraph) и генерирует пустой profiler.svg
ruby profiler.rb |. \ FlameGraph \ flamegraph.pl --countname = ms --width = 728> profiler.svg
На самом деле я ищу профилировщик, который предоставит мне подробную информацию о каждой функции времени выполнения и потребления памяти всей программы.
Я попытался установить rblineprof, но установка gem не удалась с ошибкой
Временно улучшая PATH для MSYS/MINGW... Сборка собственных расширений. Это может занять некоторое время... ОШИБКА: Ошибка установки rblineprof: ОШИБКА: не удалось создать собственное расширение для гема. текущий каталог: C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext C:/Ruby25-x64/bin/ruby.exe -r ./siteconf20180303-18232-16d88qh.rb extconf.rb проверка для rb_os_allocated_objects()... нет проверка для rb_gc_stat()... да проверка для rb_profile_frames()... да проверка для rb_tracepoint_new()... да создание Makefile текущий каталог: C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext сделать "DESTDIR=" чистым текущий каталог: C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext сделать "DESTDIR=" генерация rblineprof-x64-mingw32.def составление rblineprof.c В файле, включенном из rblineprof.c:5:0: D:/msys64/mingw64/x86_64-w64-mingw32/include/sys/time.h:42:13: ошибка: конфликтующие типы для 'gettimeofday' int __cdecl gettimeofday(struct timeval *__restrict__, ^~~~~~~~~~~~ В файле, включенном в C:/Ruby25-x64/include/ruby-2.5.0/ruby/defines.h:254:0, из C:/Ruby25-x64/include/ruby-2.5.0/ruby/ruby.h:29, от C:/Ruby25-x64/include/ruby-2.5.0/ruby.h:33, от rblineprof.c:1: C:/Ruby25-x64/include/ruby-2.5.0/ruby/win32.h:318:12: примечание: предыдущая декларация gettimeofday была здесь extern int gettimeofday(struct timeval *, struct timezone *); ^~~~~~~~~~~~ rblineprof.c:6:10: фатальная ошибка: sys / resource.h: такого файла или каталога нет #включают ^~~~~~~~~~~~~~~~ компиляция прекращена. make: *** [Makefile:242: rblineprof.o] Ошибка 1 сделать не удалось, код выхода 2 Gem файлы останутся установленными в C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7 для проверки. Результаты заносятся в C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/rblineprof-0.3.7/gem_make.out
Пожалуйста, помогите мне, как генерировать графики пламени для программы ruby.