Почему IronPython быстрее, чем официальный интерпретатор Python

согласно этому:

http://www.codeplex.com/IronPython/Wiki/View.aspx?title=IP20VsCPy25Perf&referringTitle=IronPython%20Performance

IronPython (Python для .Net) быстрее, чем обычный Python (cPython) на той же машине. Почему так? Я бы подумал, что скомпилированный код C всегда будет быстрее, чем эквивалентный байт-код CLI.

5 ответов


код Python не компилируется на C, сам Python написан на C и интерпретирует байт-код Python. CIL компилируется в машинный код, поэтому вы видите лучшую производительность при использовании IronPython.


вы правы, C намного быстрее. Вот почему в этих результатах CPython в два раза быстрее, когда дело доходит до словарей, которые почти чисты C. С другой стороны, код Python не компилируется, он интерпретируется. Вызовы функций в CPython ужасно медленные. Но с другой стороны:--2-->

TryRaiseExcept:  +4478.9%

теперь, там, где IronPython get ужасно неправильно.

и затем, есть этот проект PyPy, одной из целей которого является компилятор Just-In-Time. Есть даже подмножество Python, называемое RPython (Reduced Python), которое может быть статически скомпилировано. Что, конечно, является много быстрее.


блуждая ваш вопрос " почему?", чтобы "о, действительно?"The" good at different things " (Jason Baker) is right on. Например, cpython бьет IronPython руки вниз время запуска.

c:\Python26\python.exe Hello.py
c:\IronPython\ipy.exe Hello.py

Cpython выполняет базовый Hello world почти мгновенно (


Я не совсем уверен, как вы делаете вывод, что IronPython быстрее, чем CPython. Ссылка, которую вы публикуете, похоже, указывает на то, что они хороши в разных вещах (например, исключения, как было указано).


может ли это быть объяснено этой нотацией на странице, которую вы связали с:

из-за кэширования сайта в динамические Языковая среда выполнения, IronPython выполняет лучше с большим количеством pystone проходит, чем значение по умолчанию: