Почему запуск приложения JRuby в App Engine занимает так много времени (по сравнению с приложением Python)? - PullRequest
4 голосов
/ 30 марта 2010

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

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

Ответы [ 2 ]

10 голосов
/ 30 марта 2010

Вот и все. Если ваше приложение какое-то время не использовалось, App Engine меняет его, пока не поступит другой запрос.

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

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

По сути, просто не включайте JAR-файлы, на которые ваше приложение не сильно полагается.

0 голосов
/ 31 марта 2010

Отказ от ответственности: я сам не тестировал

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

...