рубин включает в себя слишком много локаций - PullRequest
0 голосов
/ 27 августа 2011

Я помогаю кому-то диагностировать медлительность с помощью приложений RoR.Я не настолько глубоко разбираюсь в разработке ruby, но, запустив процесс ruby, я заметил следующую странность:

Для каждого включенного файла .rb процесс ruby ​​проверяет около 110 различных мест длявключаемый файл со всеми, кроме 1, возвращающими ENOENT.Эти пути включают в себя множество несуществующих перестановок в локальных каталогах и каталогах установки gem.По иронии судьбы, восьмая попытка определения местоположения находит правильный путь, но затем ruby ​​пытается попробовать еще 100 неверных расположений, прежде чем вернуться назад и открыть файл, который он нашел в начале поиска.

Весь процесс поиска занимаетпочти 30 мс на включенный .rb файл, что в совокупности означает, что загрузка страницы занимает так много времени, что сайт становится непригодным для использования.

Я опубликовал пример выходных данных strace на случай, если это будет полезно здесь: http://pastebin.com/t9LD89dr

Итак, почему он это делает, и как мне его остановить?

1 Ответ

2 голосов
/ 27 августа 2011

Это известная проблема с требованием Ruby ... очевидно, они собираются это исправить с помощью Ruby 1.9.3.

Итак, этой медлительности трудно избежать, раскручивая приложение Ruby.

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