15

まず、これは「より優れた、無知な非イオン性の戦争スレッド」を意味するものではありません...むしろ、私は一般的に、上司に提示するアーキテクチャの決定/議論を行う際に助けが必要です。

詳細をスキップする-C#やJavaなど、シェルと[汎用プログラミング言語(ここに解釈)を挿入)のパフォーマンスを比較した人の結果を知りたいだけです。

驚いたことに、私はこのデータのいずれも見つからないようにここで検索することにGoogleでしばらく時間を費やしました。さまざまなユースケースで、これらの比較を行った人はいますか。XYXのようにデータベースにヒットする#ループの数が異なるタイプのSQLを実行する(Oracle pref、ただしMSSQLは実行する)CRUD opsのいずれかなどのクエリ-データベースにヒットせず、通常の50kループタイプの比較でさまざまなタイプの計算を実行する、そしてその性質のもの?

特に、今のところ、シェルスクリプトからOracle DBをヒットすることと、C#を使用することを比較する必要があります(ここでも、Pythonのような高レベルのものでも解釈されるGPPLは問題ありません)。しかし、私は標準的なプログラミング計算/命令/などについても知る必要があります...

質問する前に、「自分で簡単なテストを書いてみませんか?答えは次のとおりです。私は生涯/キャリアを通じてWindows開発者であり、シェルスクリプトに関する知識は非常に限られています。* nix全体は言うまでもありません。したがって、ここで経験豊富な人に質問するのは非常に有益であり、時間の節約は言うまでもなく、私たちはほぼ予想通りの締め切りに迫っています;)。

4

7 に答える 7

10

昔々、The Great ComputerLanguageShootoutにはいくつかのシェルスクリプトが含まれていました。

だから、 2004年からのインターネットアーカイブの礼儀-

シェルスクリプトには、多くのテスト用のプログラムがなかったことに注意してください。

    Score Missing-Tests

Java 20     1

Perl 16     0

Python 16   0

gawk 12     6 

mawk 10     6 

bash 7      12  

シェルスクリプトは時々小さくて速いことに注意してください:-)

「ファイルを逆にする」

        CPU (sec)   Mem (KB)    Lines Code

bash    0.0670      1464        1

C gcc   0.0810    4064        59

Python  0.3869    13160       6
于 2010-12-21T18:45:50.950 に答える
8

これは、スクリプトが実行していることに大きく依存します。簡単な変更を加えることで、不十分に記述されたシェルスクリプトが1桁、2桁、さらには3桁高速化するのを見てきました。

通常、シェルスクリプトは、通常CまたはC++でコンパイルされるユーティリティを実行するグ​​ルーロジックです。その場合、物事をスピードアップするためにできることはあまりないかもしれません。コンパイルされた不十分に書かれたユーティリティによってうなり声の仕事が行われている場合、それは本当に速く多くの無駄な努力をしているだけです。

そうは言っても、PythonまたはPerlはシェルスクリプトよりもはるかに高速になりますが、VMまたはネイティブコードはさらに高速になります。

詳細を教えていただけないため、具体的なサポートを提供することはできません。

比較のための簡単なデモンストレーションを見たい場合は、私の純粋なBash実装をhexdump試して、それを本物と比較してください。

$ time ./bash-hexdump /bin/bash > /dev/null
real    7m17.577s
user    7m2.570s
sys     0m14.745s
$ time hexdump -C /bin/bash > /dev/null
real    0m2.459s
user    0m2.260s
sys     0m0.176s

Bashバージョンが遅い主な理由の1つは、nullバイトを処理するために必要な文字ごとにファイルを読み取ることです(シェルはバイナリデータの処理があまり得意ではありません)が、主な理由は実行速度です。これが私が見つけたPythonスクリプトの例です:

$ time ./hexdump.py /bin/bash > /dev/null
real    0m11.694s
user    0m11.605s
sys     0m0.040s
于 2010-12-20T19:40:04.077 に答える
3

私は単に、いくつかのパフォーマンス比較を行った人の結果を知り、見つけたいと思っています...

そのような比較の不変の教訓は、特定の詳細が重要であるということです-多くのことです。

タスクの特定の詳細だけでなく、(プログラマーとしてこれを知っているべきではありませんが)シェルスクリプトの記述方法の特定の詳細。

では、そのシェル言語を理解し、シェルスクリプトが効率的な方法で作成されていることを確認できる人を見つけることができますか?(数行を変更するのに40分から5分かかったらいいと思いませんか。)

于 2010-12-21T19:07:57.307 に答える
2

私のシステムでこの非常に単純なベンチマークを実行しただけで、結果は期待どおりです。

1から50,000までのすべての整数を合計し、各ステップで回答を出力します

バッシュ:3秒C:0.5秒

于 2013-11-14T17:16:40.097 に答える
1

コードを記述していて、処理速度に懸念がある場合は、アセンブリに直接コンパイルされるか、最新のVM用にコンパイルされるコードを記述する必要があります。

しかし...ムーアの法則が18か月ごとに処理能力を高めているので、私は疑問に思います:パフォーマンス要件は本当に必要ですか?インタプリタされたコードでさえ、ほとんどの最新のシステムで信じられないほど高速に実行され、時間とともに改善されるだけです。コンパイルされたコードがあなたに与えるような速度の改善が本当に必要ですか?

答えが「いいえ」の場合は、あなたが幸せになるものを何でも書いてください。

于 2010-12-20T17:41:22.257 に答える
1

これには「Shell」(別名sh / bash / ksh / powerscript)言語は含まれていませんが、「言語[実装]パフォーマンス」の比較的大きなリストであり、一般性と警告が満載です。いずれにせよ、誰かがそれを楽しむかもしれません。

http://benchmarksgame.alioth.debian.org/

于 2010-12-20T20:11:42.923 に答える
0

上記のように、シェルからSQLクエリを実行することはできません。VMで実行される言語は、VMの要因のために事前に少し時間がかかりますが、それ以外の場合、違いはごくわずかです。

質問が本当にそれを40分から5分に減らすことであるならば、私はどの部分が大部分の時間を取っているかを見つけようとします。クエリが最も長く実行されている場合は、言語を切り替えてもあまり役に立ちません。

繰り返しますが(質問の詳細はあまりありませんが)、システムのさまざまなコンポーネントを調べて、どれがボトルネックであるかを確認することから始めます。

于 2010-12-20T20:22:18.213 に答える