15

約2週間ノンストップで実行する巨大なタスク[perl +データベースなどでスクリプト化された自動翻訳]を実行しています。どうすれば高速化できるかを考えていると、翻訳者がすべて (すべての翻訳文、途中のすべての情報) を常に STDOUT に出力していることがわかりました。これにより、コンソールで出力を取得すると、動作が明らかに遅くなります。

私は明らかに出力を にパイプしました/dev/nullが、「もっと速いものがあるのではないか」と考えました。それは本当に違いを生むほどの出力です。

そして、それが私があなたに尋ねている質問です。なぜなら、私の知る限り、これより速いものは何もないからです... (しかし、Linux を日常的に使用したのは過去 3 年間だけなので、私は達人ではありません)

4

3 に答える 3

26

/dev/null への出力はカーネルに実装されており、非常に高速です。現在、出力パイプは問題ではありません。/dev/null に送信される文字列を構築するのにかかる時間です。if $be_verboseプログラムを調べて、役に立たない print ステートメントであるすべての行をコメントアウト (またはガード) することをお勧めします 。かなりのスピードアップになると確信しています。

于 2010-04-27T21:11:09.177 に答える
20

(経由でdd) 毎秒 20 ギガバイトのデータを /dev/null にダンプできます。これはあなたのボトルネックではありません:-p

高速化する唯一の方法は、そもそもデータを生成しないことです。つまり、ログ ステートメントを完全に削除します。すべてのログ メッセージを生成するコストは、それらを破棄するコストをかなり上回っている可能性があります。

于 2010-04-27T21:11:54.577 に答える