Czy Python jest szybszy i lżejszy od C++? [zamknięte]

Zawsze uważałem, że zaletą Pythona jest czytelność kodu i szybkość rozwoju, ale czas i wykorzystanie pamięci nie były tak dobre jak w C++.

Te statystyki uderzyły mnie bardzo mocno.

Co twoje doświadczenie mówi o Python vs C++ czas i wykorzystanie pamięci?

Author: igouy, 2009-04-29

8 answers

Myślę, że źle odczytujesz te statystyki. Pokazują one, że Python jest do około 400 razy wolniejszy niż C++ i z wyjątkiem jednego przypadku, Python jest bardziej Wieprzem pamięci. Jeśli chodzi o rozmiar źródła, Python wygrywa.

Moje doświadczenia z Pythonem pokazują ten sam wyraźny trend, że Python jest w porządku od 10 do 100 razy wolniejszy niż C++, gdy robi się poważne łamanie numerów. Powodów jest wiele, najważniejsze z nich to: a) Python jest interpretowany, podczas gdy C++ jest kompilowany; b) Python nie ma prymitywów, wszystko, w tym wbudowane typy (int, float, itp.) są obiektami; c) lista Pythona może zawierać obiekty innego typu, więc każdy wpis musi przechowywać dodatkowe dane o swoim typie. Wszystko to poważnie utrudnia zarówno czas pracy, jak i zużycie pamięci.

To nie jest powód, by ignorować Pythona. Wiele programów nie wymaga dużo czasu ani pamięci, nawet przy 100-krotnym współczynniku spowolnienia. Koszt rozwoju jest tam, gdzie Python wygrywa prostym i zwięzłym stylem. Ta poprawa kosztów rozwoju często przewyższa koszt dodatkowych zasobów procesora i pamięci. Jeśli jednak nie, to C++ wygrywa.

 193
Author: marcog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-16 00:45:46

Wszystkie najwolniejsze (>100x) zastosowania Pythona na strzelaninie są operacjami naukowymi, które wymagają dużej liczby GFlop / s. I tak nie powinieneś używać Pythona. Poprawnym sposobem użycia Pythona jest zaimportowanie modułu, który wykonuje te obliczenia, a następnie udanie się na relaksujące popołudnie z rodziną. That is the pythonic way:)

 110
Author: Tim Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 10:10:04

Moje doświadczenie jest takie samo jak benchmarki. Python może być powolny i zużywa więcej pamięci. Piszę dużo, dużo mniej kodu i to działa za pierwszym razem z dużo mniej debugowania. Ponieważ zarządza pamięcią dla mnie, nie muszę robić żadnego zarządzania pamięcią, oszczędzając godziny ścigania wycieków rdzenia.

Jakie jest twoje pytanie?

 25
Author: S.Lott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 11:16:51

Rozmiar Źródła nie jest tak naprawdę sensowną rzeczą do zmierzenia. Na przykład następujący skrypt powłoki:

cat foobar

Jest znacznie krótszy niż jego odpowiedniki w Pythonie lub C++.

 13
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 09:58:16

Także: Psyco vs. C++.

To nadal kiepskie porównanie, ponieważ nikt nie zrobiłby numbercrunchy rzeczy, na których benchmarki i tak skupiają się w czystym Pythonie. Lepszym byłoby porównanie wydajności realistycznych aplikacji lub c++ z NumPy, aby zorientować się, czy twój program będzie zauważalnie wolniejszy.

 6
Author: millimoose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 10:00:20

Problem polega na tym, że masz dwa różne języki, które rozwiązują dwa różne problemy... to jak porównywanie C++ z asemblerem.

Python służy do szybkiego tworzenia aplikacji i gdy wydajność jest minimalnym problemem.

C++ jest Nie dla szybkiego tworzenia aplikacji i dziedziczy dziedzictwo prędkości z C-dla programowania niskiego poziomu.

 3
Author: jheriko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 10:12:16

Myślę, że te statystyki pokazują, że Python jest znacznie wolniejszy i zużywa więcej pamięci do tych benchmarków - jesteś pewien, że czytasz je dobrze?

Z mojego doświadczenia, które dotyczy głównie pisania programów sieciowych i systemowych w Pythonie, Python nie jest znacząco wolniejszy w żaden sposób, który ma znaczenie. W przypadku tego rodzaju pracy korzyści przewyższają koszty.

 2
Author: RichieHindle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 09:57:25

To ten sam problem z zarządzanym i łatwym w użyciu językiem programowania, jak zawsze - są powolne (a czasem pochłaniają pamięć).

Są to języki do kontrolowania, a nie przetwarzania. Gdybym musiał napisać aplikację do przekształcania obrazów i musiał też używać Pythona, całe przetwarzanie mogłoby być napisane w C++ i połączone z Pythonem za pomocą wiązań, podczas gdy interfejs i kontrola procesu byłyby definitywnie Pythonem.

 2
Author: Migol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 10:37:54