言葉の世紀:CPU、wc、またはperlスクリプトをあまり使用しないものは何ですか?

言葉の世紀:CPU、wc、またはperlスクリプトをあまり使用しないものは何ですか?

私の目標は、できるだけ少ないCPUを使用しながら、ファイル内の単語数を数えることです。

このwcコマンドを使用するか、この目的のために単純なPerlスクリプトを作成できます。これら2つのオプションのうち、CPUを使用しないオプションは何ですか?

答え1

CPU時間が少なくなると予想されますwc。 Cで書かれており、時間の経過とともに慎重に最適化されました。しかし、自分でテストしない理由はありません。timePerlスクリプトのパフォーマンスを比較できますwc。このtimeコマンドを使用すると、次のような出力が得られます。

> time wc /usr/share/dict/words
 119095  119095 1145922 /usr/share/dict/words
wc /usr/share/dict/words  0.03s user 0.00s system 98% cpu 0.030 total

この例では、wc合計0.030秒のCPU時間が使用されました。

答え2

通常wc、単一のコマンドラインツール(例:

複数の「コマンド」を一緒にリンクする必要がある場合にのみ、ソリューションを互いにリンクすることから、Perl、Python、Rubyなどの高度な言語で問題を解決することに切り替えることが合理的です。

コマンドを一緒に接続するためのコストは、単純なツールを複数回実行する必要があることがよくあります。

答え3

私は@wingedsubmarinerに同意します。wcあなたが書いたどんなPerlバージョンよりも速いことはほぼ確実です。

$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" wc /usr/share/dict/words
 99171  99171 938848 /usr/share/dict/words
0.02user 0.00system 0:00.02elapsed 86%CPU
$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" \
  perl -ane '$k+=$#F+1; END{print "$k\n"}' /usr/share/dict/words
99171
0.09user 0.00system 0:00.09elapsed 96%CPU

関連情報