web-dev-qa-db-ja.com

PythonはC ++よりも高速で軽量ですか?

Pythonの利点はコードの読みやすさと開発速度であるといつも思っていましたが、時間とメモリの使用量はC++ほどではありませんでした。

これらの統計 は本当に私を強く襲った。

あなたの経験は、Python対C++の時間とメモリ使用量について何を教えていますか?

83
Alex

これらの統計を間違って読んでいると思います。彼らは、PythonがC++よりも最大で約400倍遅いであり、単一の場合を除いて、Pythonはより多くのメモリを消費することを示しています。ただし、ソースのサイズに関しては、Pythonが完全に勝ちます。

Pythonの私の経験では、PythonがC++よりも10〜100倍遅いという明確な傾向を示しています。これには多くの理由があり、主な理由は次のとおりです。a)Pythonが解釈され、C++がコンパイルされます。 b)Pythonにはプリミティブがなく、組み込み型(int、floatなど)を含むすべてがオブジェクトです。 c)Pythonリストは異なるタイプのオブジェクトを保持できるため、各エントリはそのタイプに関する追加データを保存する必要があります。これらはすべて、ランタイムとメモリ消費の両方を著しく妨げます。

ただし、Pythonを無視する理由はありません。多くのソフトウェアは、100倍の速度低下要因があっても、多くの時間やメモリを必要としません。開発コストは、シンプルで簡潔なスタイルでPythonが勝つ場所です。開発コストのこの改善は、多くの場合、追加のCPUおよびメモリリソースのコストを上回ります。ただし、そうでない場合は、C++が優先されます。

208
marcog

銃撃戦でのPythonの最も遅い(> 100x)使用法はすべて、高GFlop/sカウントが必要な科学的操作です。とにかくpythonを使用しないでください。 pythonを使用する正しい方法は、これらの計算を行うモジュールをインポートし、家族とリラックスした午後を過ごすことです。 そのはPythonの方法です:)

121
Tim Lin

私の経験はベンチマークと同じです。 Pythonは遅くなり、より多くのメモリを使用します。私ははるかに少ないコードを書いており、デバッグがずっと少なくて初めて動作します。それは私のためにメモリを管理するので、メモリ管理をする必要はなく、コアリークを追跡する時間を節約します。

あなたの質問は何ですか?

25
S.Lott

ソースサイズは実際には測定するのに賢明なものではありません。たとえば、次のシェルスクリプト:

cat foobar

PythonまたはC++の同等物よりもはるかに短いです。

14
anon

また、 Psyco vs. C++

とにかく純粋なPythonに焦点を当てる傾向のある数の多いもののベンチマークを誰もやらないので、それはまだ悪い比較です。より良い方法は、実際のアプリケーションのパフォーマンス、またはC++とNumPyのパフォーマンスを比較して、プログラムが著しく遅くなるかどうかを知ることです。

6
millimoose

ここでの問題は、2つの異なる問題を解決する2つの異なる言語があることです。C++とアセンブラを比較するようなものです。

Pythonは、迅速なアプリケーション開発と、パフォーマンスが最小限の懸念事項である場合に使用します。

C++は、迅速なアプリケーション開発のためのnotであり、低レベルのプログラミングのためにCの速度のレガシーを継承します。

3
jheriko

これらの統計は、Pythonがはるかに遅く、これらのベンチマークでより多くのメモリを使用することを示していると思います。正しい方法で読んでいると確信していますか?

私の経験では、主にPythonでネットワークおよびファイルシステムにバインドされたプログラムを記述していますが、Pythonは重要な意味でそれほど遅くはありません。この種の作業では、その利点がコストを上回ります。

2
RichieHindle

これは、管理された使いやすいプログラミング言語の問題と同じです-それらは遅い(そして時々メモリを食べる)です。

これらは処理ではなく制御を行う言語です。画像を変換するアプリケーションを作成し、Pythonを使用する必要がある場合、すべての処理をC++で記述し、バインディングを介してPythonに接続し、インターフェイスとプロセス制御を定義する必要がありますPython。

2
Migol