Почему Kernel # требует такой большой части ресурсов моего приложения? - PullRequest
0 голосов
/ 14 июня 2011

Я пробую ruby-prof и запускаю его на несколько автономном модуле.Ядром модуля являются 3 класса, возможно, используются еще 3 вспомогательных класса.Так что не должно быть огромных накладных расходов с тоннами потребностей и включений.Это нормально в большом (gish) приложении с установленным большим количеством драгоценных камней?

 18.06      7.67     1.99     0.00     7.66     1366  Kernel#require
  5.80      1.21     0.64     0.00     0.83    18704  Array#map
  5.73     10.21     0.63     0.00    10.09    38133  Array#each
  5.17      1.13     0.57     0.00     0.56    21796  Array#include?
  4.40      0.49     0.49     0.00     0.00   345434  Symbol#to_s
  3.78      0.42     0.42     0.00     0.00   446478  String#==

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Из ruby-prof документации :

Для профилирования приложения Rails это жизненно важно, чтобы запустить его с использованием производства, как настройки (классы кеша, вид кеша поиски и т. д.). В противном случае Rail's код загрузки зависимостей будет перегружен любое время, проведенное в приложении сам (наши тесты показывают, что Rails загрузка зависимостей вызывает примерно 6x замедление).

Вы используете это с настройками производства? Если вы не используете кэшированные данные и вместо этого должны каждый раз читать файлы / классы с диска, я могу понять, почему вы видите, как ваша система тратит столько времени на Kernel#require.

0 голосов
/ 14 июня 2011

Я запустил ruby-prof в аналогичном случае, согласно вашему описанию, за исключением того, что моему требуется только два драгоценных камня, которые я бы не назвал «честным числом». При этом я все еще потратил 10% своего 7-секундного времени выполнения с классом Kernel # gem_original_require.

Я полагаю, что то, что вы видите, довольно типично, так как похоже на мой случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...