2

clearvstput clearおよびtput cuu1(カーソルを上に) コマンドに関する Bash および AWK スクリプトのパフォーマンスをテストしています。Bash と AWK に同様のスクリプトを実装しました。

バッシュ: http://pastebin.com/0DSc0a71

AWK: http://pastebin.com/WAJ9inRx

それらを同様の方法で書いたことを認めて、異なる実行時間を分析します。

Bashスクリプトで:

  • cleartput clearbash コマンドはコマンドと同じくらい高速です
  • そしてtput cuu1非常に高価です

AWK スクリプトで:

  • tput cuu1高価ではない

@とsystem( "clear" );@

  • そしてclearbashコマンドはコマンドよりtput clear遅い

@ と"clear" | getline Clear( http://pastebin.com/Afh3WFGR ) @

  • bashコマンドはコマンドとclear同じくらい高速ですtput clear

そのため、AWK は Bash よりも優れtput cuu1たコマンドを実行し、AWK スクリプトに組み込むと、system()関数は他の直接リコールよりも遅くなります。

@ CPU 情報の追加 @

AWK スクリプトは、bash スクリプトよりも少ない CPU を使用します。Bash スクリプトは、AWK スクリプトの 4 倍の CPU を使用します。Bashスクリプトを実行できますか?

なぜtput cuu1Bashスクリプトで非常に高価なのですか?

4

1 に答える 1

1

AWK と Bash の両方が同じ外部clearおよびtputユーティリティを呼び出しています。違いの一部は、一方と他方の実行オーバーヘッドと、2 つのスクリプトの実装方法の違いにあると思われます。私のシステムclearでは、同じシーケンスが出力されtput clear、ドキュメントはそうです。cleartputは外部ユーティリティであり、Bash コマンドや AWK コマンドではないことに注意してください。

なぜこれをしたいのですか?他の理由で必要な言語を使用します。を繰り返し呼び出す必要がないように、スクリプトの起動時にシーケンスを変数に保存しますtput。それだけで十分なclearので、便宜上のみ使用してください -tput明らかにより用途が広いです。

于 2012-07-07T01:11:21.707 に答える