groovy でワンライナー

groovy には、 -n というコマンドラインオプションがある。
入力ファイルを1行ずつ処理するというオプション。
perl にも同じようなオプションがあるので、知っている人には馴染みやすいと思う。

要は、普通なら

groovy -e "System.in.eachLine(){ line-> println line.toUpperCase();}"

とやるところを、一番外側のループを省略して

groovy -n -e "println line.toUpperCase()"

という書き方ができるというものだ。

これならいよいよ perl の代わりに使えそうだというので早速やってみた。
手元の名簿ファイル100名分ほどのうち、特定のワードを含む人だけを出力するワンライナー。
そんなもの grep で十分だと言われればそれまでなのだが、まあ、実験ということで。

しかし、これのパフォーマンスがすこぶるよくない。
同じようなワンライナーを perl で組んで実行すると、1秒もかからずに結果が出てくるのに、groovy でやると、4~5秒待たされてしまう。

どうも 100件程度の処理だと、JVM の起動時間が目立ってしまうようだ。
何万件ものデータ処理ならば、groovy のほうがパフォーマンスがよくなるような気がしてならないのだが...今は手元にいい実験材料がない。

とりあえず100件程度なら perl でやったほうが手っ取り早いぞ、というのが今日の結論。
もちろん、これもいい加減な目安に過ぎない。

groovy を使えるようになりたければ、どんなに不適切な場面であっても必ず groovy で書くようにして、groovy に慣れるべきだ、という考え方もある。

しかし、仕事でやるのなら、100件前後の処理なら、よほど複雑でない限りは、perl が無難だろう。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック