2010-03-30 1 views
4

Я рассматриваю возможность использования JRuby в App Engine, но слышал, что приложение Juby в App Engine имеет долгую задержку запуска и приложение Python. Почему это?Почему приложение JRuby в App Engine занимает так много времени (по сравнению с приложением Python)?

Это потому, что файлы Jarub Jar настолько велики, что для запуска холодного запуска они должны быть загружены в память, прежде чем приложение сможет начать работу? Это было бы моим предположением, но я не уверен, что это точное техническое объяснение. И если да, то почему Python отличается?

ответ

10

Это в основном это. Когда ваше приложение не использовалось через некоторое время, App Engine свопит его до тех пор, пока не поступит другой запрос.

Когда это произойдет, оно загружает все JAR-приложения, которые требуется вашему приложению, что может занять очень много времени, 10-15 + секунд в некоторых случаях.

У меня нет опыта работы с JRuby в частности, но у this page есть несколько советов о том, как уменьшить время начала холодного запуска вашего приложения. Советы должны быть полезны, даже если вы не строго пишете ванильную Java.

В принципе, просто не включайте JAR, на которое ваше приложение не сильно зависит.

0

Отказ от ответственности: я не протестированные это сам

Разница между версией Python и JRuby в частности , вероятно, имеют много общего с тем, что JRuby является языком реализован поверх другого языка , Механизм Python на другом руке является родным и намного ближе к CPython (некоторый внутренний вариант Unladen swallow, я бы предположил). Это означает, что для Python интерпретатор по определению уже загружен, но для JRuby ваше приложение должно начинаться с загрузки интерпретатора Ruby, прежде чем он сможет начать с его логики приложения.

 Смежные вопросы

  • Нет связанных вопросов^_^