[解決済み] Python vs Bash - どのような種類のタスクで、どちらが性能的に優れているか?[クローズド]
質問
明らかにPythonの方がユーザーフレンドリーです。googleで検索すると、Pythonはバイトコンパイルされているため、通常より速いという結果がたくさん出てきます。私はさらに この を見つけ、辞書ベースの操作で2000%以上の改善が見られると主張しています。
この件に関して、あなたの経験はどのようなものですか?どのような種類のタスクで、それぞれが明らかに勝者となるのでしょうか?
どのように解決するのですか?
典型的なメインフレームのフロー...
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 アプリケーションは、プログラムの大部分がどの言語で書かれているかに関係なく、シェルスクリプトと Bash が最も一般的になっています。デスクトップ上のアイコンをクリックすると、通常は短い Bash スクリプトを実行します。そのスクリプトは、直接または間接的に、必要なすべてのファイルがどこにあるかを知っており、変数とコマンドラインパラメータを設定し、最終的にプログラムを呼び出します。これがシェルの最もシンプルな使い方です。
しかし、システムを起動し、イベントに応答し、実行の優先順位を制御し、プログラムをコンパイルし、構成し、実行する何千ものシェル スクリプトがなければ、我々が知る Linux はほとんど Linux でないだろう。これらの多くは非常に大きく、複雑です。
シェルは、コンパイル時ではなく実行時に一緒にリンクされる、あらかじめ構築されたコンポーネントを使用できるようにするためのインフラストラクチャを提供します。これらのコンポーネントは、それ自体が独立したプログラムであり、再コンパイルすることなく単独で、あるいは他の組み合わせで使用することができます。コンポーネントを呼び出すための構文は Bash と区別がつきません。実際、システム上にスタンドアロン実行ファイルが存在する多数の組み込みコマンドがあり、しばしば追加のオプションがあります。
という言語的な違いはありません。 Python と バッシュ といった具合です。それは完全に、それぞれがどのようにコード化され、どの外部ツールを呼び出すかに依存します。
任意の のようなよく知られたツールの awk, sed, grep, bc, dc, tr, などのよく知られたツールは、どちらの言語でもこれらの操作をほったらかしにします。 バッシュ のようなツールからデータを呼び出したり戻したりするのがより簡単で効率的なので、グラフィカルユーザーインターフェースを持たないものにはBashが好まれます。 バッシュ よりも Python .
パフォーマンス
がどのようなプログラムであるかに依存します。 バッシュ シェルスクリプトがどのプログラムを呼び出すか、そしてそれらが与えられたサブタスクに適しているかによって、全体のスループットや応答性が、同等の Python . 問題を複雑にするために Python は、ほとんどの言語と同様に、他の実行ファイルを呼び出すこともできますが、より面倒なので、あまり使われません。
ユーザーインターフェース
あるエリアでは Python が明らかに勝者である分野のひとつは、ユーザーインターフェイスです。Python は GTK グラフィックスをネイティブにサポートしており、よりもはるかに直感的なので、ローカルアプリケーションやクライアントサーバアプリケーションを構築するための優れた言語となります。 Bash .
バッシュ はテキストしか理解できない。他のツールはGUIを呼び出して、そこからデータを渡す必要があります。A Python スクリプトは1つの選択肢である。より高速ですが、柔軟性に欠けるオプションとして、以下のようなバイナリがあります。 YAD, Zenity, GTKDialogのようなバイナリです。 .
のようなシェルがある一方で バッシュ のようなGUIでうまく動作します。 ヤド , GtkDialog (GTK+の機能に対する埋め込み型XMLライクなインターフェイス) , ダイアログ そして xmessage , Python の方がはるかに高性能で、複雑なGUIウィンドウのために優れています。
概要
シェルスクリプトで構築することは、デスクトップPCのように既成の部品でコンピュータを組み立てるようなものです。
での構築は Python , C++ や他のほとんどの言語は、スマートフォンのようにチップ(ライブラリ)や他の電子部品をハンダ付けしてコンピュータを構築するようなものです。
最良の結果を得るには、通常 言語の組み合わせ で、それぞれが得意とすることを行うことができます。ある開発者はこれを「"」と呼んでいます。 ポリグロット・プログラミング と呼んでいます。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 最初の引数を除くすべての引数を処理する(bashスクリプトの場合)
-
[解決済み] Pythonで文字列を連結する方法として好ましいのはどれですか?
-
[解決済み】連続したintに対するJavaのswitchは、ケースを追加することでより速く実行されるように見えるのはなぜですか?
-
[解決済み] 正の整数の非ゼロビットを高速にカウントする方法
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Python 言語を決定するには?