Почему IronPython быстрее официального переводчика Python - PullRequest
12 голосов
/ 02 февраля 2009

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

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

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

Ответы [ 5 ]

40 голосов
/ 02 февраля 2009

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

8 голосов
/ 03 февраля 2009

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

TryRaiseExcept:  +4478.9%

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

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

5 голосов
/ 06 мая 2009

Блуждаю от твоего вопроса «Почему?» К «О, действительно?» «Хороший в разных вещах» (Джейсон Бейкер) прав. Например, cpython опережает время запуска IronPython.

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

Cpython выполняет базовый мир приветствия почти мгновенно (<100 мс), где время запуска при запуске IronPython составляет 4-5 секунд. Это раздражает меня, но недостаточно, чтобы не использовать IronPython. </p>

5 голосов
/ 07 марта 2009

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

3 голосов
/ 02 февраля 2009

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

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

...