Python vs Bash - どのようなタスクでパフォーマンスの面でどちらが優れているのでしょうか? [closed] 質問する

Python vs Bash - どのようなタスクでパフォーマンスの面でどちらが優れているのでしょうか? [closed] 質問する

明らかにPythonの方がユーザーフレンドリーです。Googleでちょっと検索すると、Pythonはバイトコンパイルされるので通常は高速であるという結果が多数表示されます。これ辞書ベースの操作では 2000% 以上の改善が見られると主張しています。

この件に関して、あなたの経験はどのようなものですか? それぞれがどのようなタスクで明らかに勝者なのでしょうか?

ベストアンサー1

典型的なメインフレームのフロー...

Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> COBOL Program --------' 

典型的な Linux フロー...

Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> Python script --------'
                                   |                          ^
                                   v                          |
                                   `--> awk script -----------'
                                   |                          ^
                                   v                          |
                                   `--> sed script -----------'
                                   |                          ^
                                   v                          |
                                   `--> C/C++ program --------'
                                   |                          ^
                                   v                          |
                                   `--- Java program ---------'
                                   |                          ^
                                   v                          |
                                   :                          :

シェルはLinuxの接着剤

sh/ksh/のようなLinuxシェルバッシュ/... は、古いメインフレームのジョブ制御言語によく似た入力/出力/フロー制御指定機能を提供します...ただし、ステロイドです!チューリング完全な言語それ自体の権限を持ちながら、O/S がサポートする任意の言語で記述された他の実行プロセスとの間でデータと制御を効率的に受け渡すように最適化されています。

ほとんどのLinuxアプリケーションは、プログラムの大部分がどの言語で書かれているかに関係なく、シェルスクリプトに依存しており、バッシュ最も一般的になっています。デスクトップ上のアイコンをクリックすると、通常は短いバッシュスクリプト。そのスクリプトは、直接的または間接的に、必要なすべてのファイルの場所を認識し、変数とコマンド ライン パラメータを設定し、最終的にプログラムを呼び出します。これがシェルの最も単純な使用法です。

しかし、私たちが知っている Linux は、システムの起動、イベントへの応答、実行優先度の制御、プログラムのコンパイル、構成、実行を行う何千ものシェル スクリプトがなければ、Linux とは言えません。これらの多くは非常に大きく複雑です。

シェルは、コンパイル時ではなく実行時にリンクされる、あらかじめ構築されたコンポーネントを使用できるインフラストラクチャを提供します。これらのコンポーネントは、それ自体が独立したプログラムであり、再コンパイルせずに単独で、または他の組み合わせで使用できます。それらを呼び出す構文は、バッシュ組み込みコマンドは数多くあり、システム上にはスタンドアロンの実行可能ファイルも存在し、多くの場合、追加のオプションを持つ組み込みコマンドも多数あります。

言語による違いはないパイソンそしてバッシュパフォーマンスはそれぞれがどのようにコーディングされ、どの外部ツールが呼び出されるかによって決まります。

どれでもよく知られているツールのawk、sed、grep、bc、dc、tr、などにより、どちらの言語でもこれらの操作を実行する必要がなくなります。バッシュグラフィカルユーザーインターフェースを持たないものには、ツールからデータを呼び出して渡す方が簡単で効率的であるため、これが好まれます。バッシュよりもパイソン

パフォーマンス

どのプログラムがバッシュシェルスクリプトの呼び出しと、与えられたサブタスクへの適合性、全体的なスループットや応答性が同等のものより優れているか劣っているかパイソン事態を複雑にするのはパイソンほとんどの言語と同様に、 は他の実行可能ファイルを呼び出すこともできますが、扱いにくいため、あまり使用されません。

ユーザーインターフェース

一つの領域はパイソン明確な勝者はユーザーインターフェースです。ネイティブでGTKグラフィックスをサポートし、はるかに直感的なため、ローカルまたはクライアントサーバーアプリケーションを構築するのに最適な言語です。バッシュ

バッシュテキストのみ理解します。GUIとそこから返されるデータのために他のツールを呼び出す必要があります。パイソンスクリプトは1つの選択肢です。より高速ですが柔軟性に欠ける選択肢としては、次のようなバイナリがあります。YAD、Zenity、GTKDialog

シェルはバッシュ次のようなGUIでうまく機能しますヤドGtkDialog (GTK+ 関数への埋め込み XML のようなインターフェース)ダイアログ、 そしてxメッセージパイソンはるかに高性能なので、複雑な GUI ウィンドウに適しています。

まとめ

シェル スクリプトを使用して構築することは、デスクトップ PC のように既製のコンポーネントを使用してコンピューターを組み立てることに似ています。

建物とパイソンC++あるいは、他のほとんどの言語は、スマートフォンのようにチップ (ライブラリ) やその他の電子部品をはんだ付けしてコンピューターを構築することに似ています。

最良の結果は通常、言語の組み合わせそれぞれが得意なことをできる場所です。ある開発者はこれを「多言語プログラミング「」。

おすすめ記事