2011-07-06 4 views
5

私は特定の出力ファイルを操作したいプロジェクトを持っています。コマンドラインユーティリティはC++より速くできますか?

これは、grepとsedの組み合わせと|

また、同じことをするためのC++プログラムを書くこともできます。

grepとsedがすでによく最適化されているため、どの方法が高速になるのかについての最終的な答えはありますか?

+16

あなたがC++アプリケーションを書いた頃には、スクリプトは何千回もやると思います。 – Xeo

+0

もっと速いsed/awk/grepなどを書き込むのはかなり難しいです。 – Drakosha

+4

...すべてが釘ではありません...手持ちの仕事に適切なツールをいつ使用するかを知ってください... – Nim

答えて

4

もし私があなただったら、は既にそこにあるを使用してください。これらはおそらく長時間かけてテストされています。同じことをするためにあなた自身が新しいプログラムを書いているのはのホイールを改革してタイプのアクションを再現しているようで、エラーになりやすいです。

7

技術的な観点からは、IPCのオーバーヘッドがないため、パイプで相互接続された2つ(またはそれ以上)のシェルコマンドを使用するよりも、必要なものすべてを実行する優れた自己完結型C++プログラムが高速になります。彼らはあなたの正確なニーズに合わせて調整することができます。

しかし、あなたは年中無休で実行されるプログラムを書いていない限り、努力する価値があることに気付かないでしょう。

とプリ最適化のための標準的な規則が適用されます...

+3

それは、あなたがgrepとsedの開発者が使用したアルゴリズムと最適化の仕組みをすべて知っていることを前提にしています。 – KillianDS

+0

@KillianDS:Perl、Python、Boostの正規表現はgrepよりもはるかに遅いのでしょうか。単純なファイルを行単位で処理するために、Pythonを使用するとbashとsedよりもパフォーマンスが大幅に向上します。 –

0

あなたは本当にあなたが配管を買ってあげるよりも、より高速なパフォーマンスが必要な場合は、grepのとSEDとのあなたのニーズに合わせ、それをするためのソースをダウンロードすることができます1つのアプリケーション(コードの配布を計画している場合は、ライセンスに注意してください)。私はあなたがパイピングのオーバーヘッド(Flimzyのように言及されている)に気づくならば非常に驚くでしょう。物事が本当に遅いなら、私はあなたのアプリのプロファイリングを始めるでしょう。

0

あなたが非常に良いC/C++プログラマであり、あなたが考えているパイプラインよりも高速なプログラムを書くことができるようになることを、時間の多くを費やす場合は可能性が高いです。しかし、このような場合にパフォーマンスが非常に重要でない限り、パイプラインを使用する必要があります。

関連する問題