[解決済み] なぜPythonのプログラムはCやC++で書かれた同等のプログラムより遅いのですか?
疑問点
なぜ Python は C/C++ よりも平均的に遅く感じるのでしょうか?私は最初のプログラミング言語として Python を学びましたが、C を始めたばかりで、すでに明確な違いが見えるように感じています。
どのように解決するのですか?
PythonはC言語よりも高レベルな言語です。つまり、メモリ管理やポインタなど、コンピュータの詳細を抽象化し、人間の思考方法に近い方法でプログラムを書くことができます。
実行時間だけを見れば、C言語のコードはPythonのコードの10倍から100倍速く動くことは事実です。しかし、開発時間も含めると、PythonはしばしばCに勝ります。多くのプロジェクトでは、開発時間は実行時のパフォーマンスよりもはるかに重要です。開発時間が長いと、余分なコストがかかり、機能が少なくなり、市場投入までの時間が遅くなることに直接変換されます。
内部的には、Pythonのコードがより遅く実行される理由は、コードがコンパイル時にネイティブコードにコンパイルされる代わりに、実行時に解釈されるからです。
Java バイトコードや .NET バイトコードのような他のインタプリタ型言語は Python よりも速く実行されますが、これは標準配布物に JIT コンパイラ が含まれており、実行時にバイトコードをネイティブコードにコンパイルするからです。CPythonがすでにJITコンパイラを持っていない理由は、Pythonの動的な性質がそれを書くことを難しくしているからです。あるのは 作業 で 進行状況 を使用してより高速な Python ランタイムを記述しているため、将来的にパフォーマンスの差が縮まることを期待すべきですが、標準の Python ディストリビューションが強力な JIT コンパイラを含むようになるにはおそらくしばらく時間がかかると思われます。
関連
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] Pythonを機械語にコンパイルすることは可能ですか?