Как скорость Ironpython сравнивается с другими языками .net?

Я хотел бы привести источники того, что я говорю, но у меня их нет, это то, что я слышал.

Однажды профессор программирования сказал мне, что некоторые тесты программного обеспечения, сделанные для .net и Python в некоторых конкретных элементах, дают соотношение 5: 8 в пользу .NET. Это был его аргумент в пользу того, что Python не намного медленнее, чем .NET

Вот в чем дело, я хотел бы попробовать IronPython, так как я мог бы объединить веб-фреймворк, который я знаю больше всего (asp.net), с языком, который мне нравится больше всего (Python), и мне было интересно узнать о скорости программ в asp.net в Python против скорости программ в ASP.NET с VB.net или C #. Есть ли какой-нибудь программный бенчмаркинг по этому поводу?

Кроме того, не должны ли скорости IronPython по сравнению с другими языками .NET быть одинаковыми, поскольку IronPython в отличие от Python должен компилироваться в промежуточный код .NET? Может кто-нибудь рассказать мне об этих проблемах?

Приветствую

7.11.2009 14:27:18
Когда вы написали тестовую программу и запустили ее, что вы заметили? Какие функции .Net вы хотите использовать?
S.Lott 7.11.2009 15:45:09
Я не написал тестовую программу для него. Интересно, есть ли заметная разница в целом, но если слишком много зависит от того, какие функции вы используете, я полагаю, что нет. Мы пишем общее административное программное обеспечение для региональных компаний без больших требований к трафику, и я не думал о конкретном проекте, когда я спросил. Это (очень) вероятно, я не на техническом уровне, который у вас есть, но я видел некоторые тесты в Интернете, когда в большинстве элементов Python указан медленнее, чем в других языках, и мне интересно, то же самое для Python, чем для IronPython в связи с .net Thxs за ответ
Pablo 7.11.2009 16:55:15
«слишком много зависит от того, какие функции вы используете» всегда верно. Общие критерии бесполезны. Какие особенности вас интересуют? Что мешает вам написать эталон между IPython и C # для этих функций?
S.Lott 7.11.2009 17:00:31
Полагаю, что мешает мне написать такой тест, это время, которое у меня ушло на то, чтобы определить все, что я хочу использовать, и протестировать их, так как у меня есть другие повседневные проблемы с программированием, и идея изменения языка .NET не стала приоритет для меня еще
Pablo 7.11.2009 17:37:08
@ S.Lott: RE "Общие критерии бесполезны." - Я не согласен. Хорошо написанный набор тестов может выделить относительные сильные и слабые стороны для различных функций или задач. Почему бы не начать задачу сравнительного анализа (как и любую другую задачу) с изучения опыта других людей?
ToolmakerSteve 18.12.2013 22:44:25
3 ОТВЕТА
РЕШЕНИЕ

Вот две интересные ссылки со сравнениями между IronPython, CPython и C # (среди прочих):

  • CPython против C # (Mono) контрольных показателей , на основе нескольких программ , описанных на сайте.
  • CPython против IronPython тесты , основанные на PyStone и PyBench, для версии 2.6.

По-видимому, это соответствует тому, что сказал вам ваш профессор. Но, как вы знаете, это очень сильно зависит от того, что вы используете.

Разница в основном связана с динамической природой объектов, используемых в Python, тогда как C # строго типизирован. Таким образом, IronPython использует еще один уровень (DLR - динамическое время выполнения языка) поверх того, из чего запускается C # (CLR - общее время выполнения языка), чтобы устранить эту разницу.

Я обычно ненавижу цитировать статьи в Википедии, но это хорошая отправная точка: http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

Теперь, чтобы вернуться к вашему проекту, производительность, вероятно, будет больше зависеть от ваших алгоритмов / эвристики - например, от того, как вы запрашиваете базу данных - чем от языка. Если вы знакомы с веб-фреймворком и довольны им, хорошей идеей будет придерживаться той же среды, а не зарабатывать несколько процентов на том, что вам придется сначала приручить. Это не было бы то же самое, если бы приложение, конечно, сильно загружало процессор.

9
7.11.2009 15:30:02
"C # строго типизирован". Вы имеете в виду «статически типизированный»? Или "строго типизированные объявления переменных"? Связывание типов в Python достаточно сильное, но его переменные являются динамическими.
S.Lott 7.11.2009 17:02:08
Я имею в виду строго типизированные объявления, которые, конечно, позволяют компилятору гораздо ближе к конечному результату в сборках, чем тот, который Python может достичь из-за своей утилитарной типизации.
RedGlyph 7.11.2009 17:25:39
К сожалению , в CPython против IronPython тесты выполнялись либо только один раунд отчетности, или в некоторых случаях , безусловно , только работает один раунд, что делает их весьма сомнительна.
Nick Bastin 7.11.2009 17:44:40
Это дает общее представление, я не думаю, что было бы разумно извлекать глобальные показатели производительности для таких разных приложений (что отражается в несоответствии их результатов). Сравнение нескольких критериев, связанных с тем, что на самом деле нужно ОП, было бы более уместным, о чем С.Лотт заявил в своем посте. Но это еще работа :-)
RedGlyph 7.11.2009 17:48:56
@ S.Lott - в мире .NET люди, похоже, намерены называть статическую типизацию «строгой типизацией». Я не уверен, почему они это делают.
orip 10.11.2009 20:31:36

Вы можете включить трассировку .net, которая выводит информацию о времени внизу страницы. Создайте приложение на C # /. Net и приложение на Python и посмотрите на разницу во времени. Это даст вам окончательный ответ.

Честно говоря, я думаю, что вам лучше просто использовать C #, его «быстрее» разрабатывать, поскольку среда VS для вас и она будет работать быстрее, так как ей не нужно использовать динамическую среду исполнения языка.

1
7.11.2009 20:24:16
Я знаю, но что меня привлекает в Python, так это то, что он позволяет вам писать меньше кода, кроме того, я думаю, что вы не можете сделать это в C # без переписывания (хотя и не полностью уверены) ironpythonresource.com/post/2008/08/23/ …
Pablo 12.11.2009 18:01:52
Возможно, в C # 4.0 с новыми функциями?
Pablo 4.12.2009 16:54:56
Как динамически типизированный язык Python, как правило, разрабатывается быстрее, чем C #. Если вы используете IDE, такую ​​как Wing, с intellisense и т. Д. Для Python, то вы получите многое из того, что Visual Studio может предложить для C #.
fuzzyman 14.12.2009 00:25:55
да, в веб-разработке трудно вернуться к статически типизированному языку, когда вы попробовали динамически типизированный. Но я думаю, что я читал, что C # 4.0 будет иметь возможности динамического типа
Pablo 15.12.2009 13:13:44
о, я только что понял, что прочитал вашу книгу IronPython. Есть планы на испанский релиз, потому что если он есть, я не могу его найти :)
Pablo 15.12.2009 13:21:13

IronPython будет значительно медленнее, чем C #. Можно было бы сравнить сравнение между CPython и C, но с небольшим разрывом.

0
11.04.2010 17:02:56