Является ли Python быстрее и легче С++?

Я всегда думал, что преимущества Python - это скорость чтения и развития кода, но время и использование памяти не так хороши, как у С++.

Эти статистические данные сильно поразили меня.

Что ваш опыт говорит вам о времени и памяти Python vs С++?

Ответ 1

Я думаю, что вы неправильно читаете эту статистику. Они показывают, что Python примерно в 400 раз медленнее, чем С++, и, за исключением одного случая, Python больше похож на память. Когда дело доходит до размера источника, Python выигрывает.

Мои опыты с Python показывают ту же определенную тенденцию, что Python находится в порядке от 10 до 100 раз медленнее, чем С++ при выполнении любого серьезного хруста. Для этого есть много причин, основными из которых являются: а) интерпретируется Python, а С++ - скомпилирован; б) у Python нет примитивов, все, включая встроенные типы (int, float и т.д.), являются объектами; c) список Python может содержать объекты различного типа, поэтому каждая запись должна хранить дополнительные данные о ее типе. Все это серьезно затрудняет как время работы, так и потребление памяти.

Это не повод игнорировать Python. Множество программ не требует много времени или памяти даже при 100-кратном временном коэффициенте. Стоимость разработки - это то, где Python выигрывает с простым и сжатым стилем. Это улучшение стоимости разработки часто перевешивает стоимость дополнительных ресурсов процессора и памяти. Однако, когда это не так, выигрывает С++.

Ответ 2

Все самые медленные ( > 100x) применения Python в перестрелке - это научные операции, которые требуют высокого значения GFlop/s. Вы не должны использовать python для них. Правильный способ использования python состоит в том, чтобы импортировать модуль, который выполняет эти вычисления, а затем отправиться в расслабляющий день с семьей. Это питонический путь:)

Ответ 3

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

Каков ваш вопрос?

Ответ 4

Размер источника - это не разумная вещь для измерения. Например, следующая оболочка script:

cat foobar

намного короче, чем его эквиваленты Python или С++.

Ответ 5

Также: Psyco vs. С++.

Это все еще плохое сравнение, так как никто не будет делать числовые тесты производительности, которые, как правило, сосредоточены на чистом Python. Лучше было бы сравнить производительность реалистичных приложений или С++ против NumPy, чтобы понять, будет ли ваша программа заметно медленнее.

Ответ 6

Проблема заключается в том, что у вас есть два разных языка, которые решают две разные проблемы... это похоже на сравнение С++ с ассемблером.

Python предназначен для быстрой разработки приложений и для того, чтобы производительность была минимальной проблемой.

С++ не предназначен для быстрой разработки приложений и наследует наследие скорости от C - для программирования низкого уровня.

Ответ 7

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

По моему опыту, который в основном связан с написанием программ, связанных с сетью и файловой системой, в Python, Python существенно не замедляет работу. Для такого рода работ его преимущества перевешивают его издержки.

Ответ 8

Это та же проблема с управляемым и простым в использовании языком программирования, как всегда - они медленные (а иногда и с памятью).

Это языки для управления, а не для обработки. Если бы мне пришлось писать приложение для преобразования изображений и пришлось использовать Python, то вся обработка могла быть записана на С++ и подключена к Python через привязки, тогда как интерфейс и управление процессом были бы определенно Python.