Производительность памяти профиля для части проекта рельсов
Я хочу проверить использование профиля важного библиотечного класса моего rails-проекта. Он использует ActiveRecord, поэтому мне нужны все зависимости rails для его профилирования.
Насколько я знаю, мне нужен исправленный ruby (rubygc), чтобы скрипт / профиль и скрипт / тест могли отслеживать использование памяти. Я пытался следовать этому официальному руководству для исправления исходного кода ruby 1.8.6 (p399) и 1.8.7 (p248), но оба не удаются со следующим сообщением:
patching file gc.c
Hunk #2 succeeded at 50 with fuzz 2 (offset 2 lines).
Hunk #3 succeeded at 87 with fuzz 2 (offset 6 lines).
Hunk #4 succeeded at 153 with fuzz 1 (offset 45 lines).
Hunk #5 succeeded at 409 with fuzz 2 (offset 274 lines).
Hunk #6 FAILED at 462.
Hunk #7 FAILED at 506.
Hunk #8 FAILED at 520.
Hunk #9 FAILED at 745.
Hunk #10 FAILED at 754.
Hunk #11 FAILED at 923.
Hunk #12 succeeded at 711 (offset 46 lines).
Hunk #13 succeeded at 730 (offset 46 lines).
Hunk #14 succeeded at 766 (offset 55 lines).
Hunk #15 succeeded at 1428 (offset 87 lines).
Hunk #16 succeeded at 1492 (offset 89 lines).
Hunk #17 FAILED at 1541.
Hunk #18 FAILED at 1551.
Hunk #19 succeeded at 1571 (offset 91 lines).
Hunk #20 succeeded at 1592 (offset 91 lines).
Hunk #21 succeeded at 1601 (offset 91 lines).
Hunk #22 succeeded at 1826 (offset 108 lines).
Hunk #23 succeeded at 1843 (offset 108 lines).
Hunk #24 succeeded at 1926 (offset 108 lines).
Hunk #25 succeeded at 2118 (offset 108 lines).
Hunk #26 succeeded at 2563 (offset 100 lines).
Hunk #27 succeeded at 2611 with fuzz 1 (offset 102 lines).
Hunk #28 succeeded at 2628 (offset 102 lines).
8 out of 28 hunks FAILED -- saving rejects to file gc.c.rej
patching file intern.h
Hunk #1 succeeded at 268 (offset 15 lines).
Я также пытался использовать ruby-prof, но всегда получаю ошибку "неинициализированная константа RubyProf::Test". Я не знаю, как использовать гем "память", и ни "memprof", ни "bleak_house" не могли быть успешно установлены.
Если я получу исправленный рубин, у меня все будет хорошо. Но любая другая возможность профилировать память библиотечных классов приветствуется. Спасибо за помощь!
2 ответа
Я тоже всегда получал эту ошибку с ruby-prof. В файле profile_test_helper.rb есть ошибка. Если вы измените строку 17 на "требовать 'ruby-prof/test'", это должно сработать.
Если вы работаете в Windows, вы можете попробовать Ruby Memory Validator.
Вы также можете попробовать оригинальный интерфейс Ruby Memory Tracking API, из которого получены некоторые другие. Это работает для любой платформы, но вам придется самостоятельно собирать Ruby (и вызывать API из C/C++ самостоятельно).