Почему время запуска IronPython такое медленное?

Я использую IronPython уже некоторое время, но что действительно мешает моему развитию, так это то, что он мучительно запускается. Мне нравится язык и способ его работы, но меня раздражает необходимость ждать более 20 секунд, прежде чем он начнет выполнять мой код.

Я немного покопался и кажется, что проблема не в importинге, а до этого этапа.

Спасибо.


person Lucas Jones    schedule 18.06.2009    source источник
comment
Да, конечно медленно. Будет интересно посмотреть, станет ли она быстрее, когда DLR будет полностью интегрирована в .NET 4.0.   -  person Jon Skeet    schedule 19.06.2009
comment
С надеждой. Очень жаль, ведь это такой хороший набор. Однако .NET 4 выглядит потрясающе. К сожалению, мой жесткий диск объемом 20 ГБ слишком загружен для переноски VS2010 :)   -  person Lucas Jones    schedule 19.06.2009


Ответы (1)


Мы работаем над исправлением этого в версии 2.6. Вы можете загрузить бета-версию 1 сегодня, и вы, вероятно, увидите значительно улучшенный время запуска.

Проблема в том, что большую часть времени обычно тратится на JIT-код. Это особенно заметно, если вы работаете на 64-битной машине, потому что 64-битная медленнее. В версии 2.6 мы теперь откладываем компиляцию вещей до тех пор, пока они не будут запущены в первый раз, интерпретируем их, если они нужны только один или два раза, и мы переместили кучу кода, который мы генерируем во время выполнения, в IronPython.dll, чтобы он тоже выигрывает от ngen. Чем больше приложение, тем большее улучшение вы, вероятно, увидите от всех этих изменений.

Если вы не отметили параметр ngen при установке IronPython, вы можете вернуться и запустить его из командной строки, выполнив «ngen install ipy.exe». ngen.exe находится в папке C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe или C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe, если вы используете 64-разрядную бит машина. Но это должна быть командная строка администратора. Сегодня это даст вам некоторые преимущества в стабильной версии. Если вы используете 64-разрядную систему, вам нужно будет сделать это, даже если вы установили флажок — есть ошибка, которая мешала корректной работе ngen на 64-разрядной версии.

person Dino Viehland    schedule 18.06.2009
comment
Вечером посмотрю на 2.6. В прошлом у меня был неудачный опыт работы с ngen (кхм.. TOAD), поэтому я снял этот флажок во время установки — я тоже запущу его! Спасибо. - person Lucas Jones; 19.06.2009
comment
Я рад слышать, что над этим работают. Я широко использую IronPython, и это моя проблема №1. - person riwalk; 03.07.2010