Вопрос

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

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

Что ваш опыт говорит вам о времени и использовании памяти между Python и C++?

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Каков твой вопрос?

Размер источника на самом деле не имеет смысла измерять.Например, следующий сценарий оболочки:

cat foobar

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

Также: Псико против.С++.

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top