質問

Pythonの利点はコードの読みやすさと開発速度であると常に考えていましたが、時間とメモリの使用量はC ++ほど優れていませんでした。

これらの統計は、私を非常に驚かせました。

PythonとC ++の時間とメモリ使用量について、あなたの経験から何がわかりますか?

役に立ちましたか?

解決

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

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

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

他のヒント

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

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

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

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

cat foobar

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

また: Psyco vs. C ++

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

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

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top