この記事では、C コードが Python よりも高速に実行される理由を学びます。
Guido Van Rossum は、最も有名なプログラミング言語の 1 つである Python を開発しました。 Python は、初心者でもわかりやすい 構文 とシンプルなコードのため、開発者の間で人気があります。 Python を学ぶことは、プログラミングのキャリアを始めたばかりの人にとって非常に有益です。 Python プログラミング トレーニング、ブログ、ビデオ、モジュール、その他の何千ものリソースを使用して、この人気のある言語のあらゆる側面を学ぶことができます。完了すると、GUI 開発、Web デザイン、システム管理、複雑な金融取引や計算、データ サイエンス、視覚化などの最新の開発アクティビティを実行できるようになります。
Python はインタープリタ言語であるため、C よりも遅くなります。
したがって、特定のステートメントを実行するには、より多くの実際の CPU 命令が必要になります。
数値 1 を追加するか、Python コード内の指定された値と比較することで、変数の値がその値より小さいか、大きいか、または正確に等しいかどうかを確認できます。
違いは、Python コードが CPU によってすぐに実行されるのではなく、解釈されることです。
パフォーマンスの点では、これは大きな違いを生みます。
仮想コンピュータの別名は「バイトコード インタプリタ」です。
解釈されたコードは、実際のマシン命令を実行するよりも命令を実装するために多くの命令を必要とするため、常に実際のマシンコードよりも遅くなります。
######例######これを理解するには、まず Python が内部でどのように動作するかを理解する必要があります。 Python の内部コンポーネントには、トークナイザー、字句アナライザー、バイトコード ジェネレーター、バイトコード インタープリターが含まれます -
Tokenizer
字句アナライザー
バイトコード ジェネレーター
「バイトコード インタープリター」
として知られる Python モジュールは、バイトコード ストリームを管理し、Python 仮想マシンに電力を供給します (その状態を維持します)。バイトコードは生成されると、通常、メモリにキャッシュされます。
これにより、Python がすでに認識したコードのトークン化、字句解析、バイトコード生成プロセスを繰り返す必要がなくなるため、速度が向上します。
これのほうが早いんじゃないでしょうか?
いいえ、実際にはそうではありません。キャッシュされたバイトコードを使用すると高速になりますが、マシンコードほど高速に実行または操作されません。
コードを実行している実際の CPU は仮想コンピューターではありません。
コンパイルプロセスコンパイル済み UCSD Pascal は、当時の他のコンパイル済み言語とは異なり、アセンブリ言語にコンパイルされていませんでした。代わりに、それは p コードにコンパイルされます。
つまり、「コンパイルされた Pascal プログラム」について考えるとき、p-Code を思い浮かべるでしょう。 Java または Python が好きで、何か新しいことを思いついたふりをしたい場合は、「バイトコード」を使用してください。
.py 拡張子が付いたファイルは、Python ソース コードを含む ASCII テキスト ファイルです。
PYthon、コンパイル済みは、「.pyc」拡張子を持つファイルが表すものです。
それでも、仮想コンピュータは作成されたコードを実行します。
ネイティブコード
プログラムが構築されると、そのプログラムが設計されたプラットフォームのネイティブ バイナリ CPU 命令に変換されるまで、ネイティブ コードに完全には変換されません。
これには通常、アセンブリ コードを記述し、それをアセンブラに渡し、バイトコードを使用する代わりにアセンブラにプラットフォーム固有のオブジェクト ファイルを作成させることが含まれます。
Python は広範な健全性チェックを実行します。整数がオーバーフローすることはなく、無効なメモリにアクセスすることはなく、型が (暗黙的に) 不正になることはなく、配列が末尾を超えて書き込まれたり読み取られたりすることはありません。 Python では、「非ローカル エラー」が発生することはほとんどありませんが、C では、実際に報告されたエラーではないエラーが発生することはかなり一般的です。
Python のコンパイラーは、非常に高度な最適化 (もしあったとしても) を行いません。たとえば、Common Lisp などでは、速度は C ほど重要ではなく、情報もそれほど多くありません。 (Python のような別の動的言語) では、C と同じ速度を得るために型の注釈を提供できます。安全性チェックをオプトアウトし、特定の変数が特定の型を持つことを約束すると、まったく同じマシンコード命令が得られます (プログラムにバグがある場合、まったく同じ奇妙な動作が発生します)。
以上がなぜ C コードは Python よりも高速に実行されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。