Programing

Python이 C ++보다 빠르고 가볍습니까?

crosscheck 2020. 9. 20. 08:48
반응형

Python이 C ++보다 빠르고 가볍습니까? [닫은]


저는 항상 Python의 장점이 코드 가독성과 개발 속도라고 생각했지만 시간과 메모리 사용량은 C ++만큼 좋지 않았습니다.

이 통계 는 저에게 정말 충격적이었습니다.

귀하의 경험은 Python 대 C ++ 시간 및 메모리 사용량에 대해 무엇을 알려 줍니까?


그 통계를 잘못 읽는 것 같습니다. 그들은 파이썬이 C ++보다 최대 약 400 배 느리다 는 것을 보여 주며 , 단 하나의 경우를 제외하고 파이썬은 메모리를 많이 차지합니다 . 그러나 소스 크기에 관해서는 Python이 우세합니다.

Python에 대한 나의 경험은 심각한 숫자 처리를 할 때 Python이 C ++보다 10 ~ 100 배 정도 느리다는 것과 동일한 확실한 추세를 보여줍니다. 여기에는 여러 가지 이유가 있습니다. 주요 이유는 다음과 같습니다. a) Python은 해석되고 C ++는 컴파일됩니다. b) 파이썬에는 프리미티브가 없으며 내장 유형 (int, float 등)을 포함한 모든 것이 객체입니다. c) 파이썬 목록은 다른 유형의 객체를 보유 할 수 있으므로 각 항목은 해당 유형에 대한 추가 데이터를 저장해야합니다. 이것들은 모두 런타임과 메모리 소비를 심각하게 방해합니다.

이것은 파이썬을 무시할 이유가 아닙니다. 많은 소프트웨어는 100 배 속도 저하 요인에도 많은 시간이나 메모리를 필요로하지 않습니다. 개발 비용은 Python이 간단하고 간결한 스타일로 승리하는 곳입니다. 이러한 개발 비용 개선은 종종 추가 CPU 및 메모리 리소스 비용보다 큽니다. 그러나 그렇지 않으면 C ++이 승리합니다.


총격전에서 가장 느린 (> 100x) Python 사용은 모두 높은 GFlop / s 카운트가 필요한 과학적 작업입니다. 어쨌든 파이썬을 사용해서는 안됩니다. 파이썬을 사용하는 올바른 방법은 이러한 계산을 수행하는 모듈을 가져온 다음 가족과 함께 편안한 오후를 보내는 것입니다. 그것이 파이썬적인 방법입니다 :)


내 경험은 벤치 마크와 동일합니다. Python은 느릴 수 있으며 더 많은 메모리를 사용합니다. 나는 훨씬 적은 코드를 작성하고 훨씬 적은 디버깅으로 처음으로 작동합니다. 메모리를 관리하기 때문에 메모리 관리를 할 필요가 없으므로 코어 누수를 추적하는 시간을 절약 할 수 있습니다.

질문이 뭐야?


소스 크기는 실제로 측정하기에 합리적이지 않습니다. 예를 들어, 다음 쉘 스크립트 :

cat foobar

Python 또는 C ++ 등가물보다 훨씬 짧습니다.


또한 : Psyco 대 C ++ .

그것은 여전히 ​​나쁜 비교입니다. 왜냐하면 아무도 numbercrunchy 작업을하지 않을 것이기 때문입니다. 벤치 마크는 어쨌든 순수 파이썬에서 집중하는 경향이 있습니다. 더 나은 방법은 실제 응용 프로그램의 성능 또는 C ++와 NumPy를 비교하여 프로그램이 눈에 띄게 느려질 지 여부를 파악하는 것입니다.


여기서 문제는 두 가지 다른 문제를 해결하는 두 가지 언어가 있다는 것입니다. C ++를 어셈블러와 비교하는 것과 같습니다.

Python은 신속한 애플리케이션 개발 및 성능이 최소한의 문제 일 때 사용됩니다.

C ++는 신속한 애플리케이션 개발을위한 것이 아니며 저수준 프로그래밍을 위해 C의 속도의 유산을 계승합니다.


이 통계는 Python이 훨씬 느리고 벤치 마크에 더 많은 메모리를 사용한다는 것을 보여줍니다. 올바른 방법으로 읽는 것이 확실합니까?

내 경험상 대부분 Python으로 네트워크 및 파일 시스템 바인딩 프로그램을 작성하는 데있어 Python은 어떤 방식 으로든 크게 느리지 않습니다. 그런 종류의 작업에서는 비용보다 이점이 더 큽니다.


항상 그렇듯이 관리되고 사용하기 쉬운 프로그래밍 언어와 동일한 문제입니다. 느리고 때로는 메모리를 소모합니다.

이들은 처리가 아닌 제어를 수행하는 언어입니다. 이미지를 변환하기 위해 애플리케이션을 작성해야하고 Python도 사용해야한다면 모든 처리를 C ++로 작성하고 바인딩을 통해 Python에 연결할 수 있으며 인터페이스 및 프로세스 제어는 분명히 Python이 될 것입니다.

참고 URL : https://stackoverflow.com/questions/801657/is-python-faster-and-lighter-than-c

반응형