Apacheのアクセスログを爆速でLTSVに変換する

Apacheのアクセスログ(commonあるいはcombined形式)をLTSVに変換するツールをJavaで書いてみた。

使い方:
mcp.jarをダウンロードし、

cat access_log | java -cp mcp.jar net.jumperz.app.MCP.MCP net.jumperz.io.multicore.example.MCombined2LTSV

パースするコードそのものはこんな感じで普通。正規表現は使っていない。たぶんJava1.4以上でコンパイル可能。

こういう処理をさくっとマルチコア対応にするためのフレームワーク、MCPというのを作ったので、早速利用してみると、手元の4コアのマシンでは約140万行/秒(common形式のログ)という爆速で変換が終了する。dankogai氏が書かれているperlスクリプトより約20〜30倍速い(正規表現を使うかどうかという点が大きく関係していると思われるが)。

MCPについてはScutumブログに詳しく書いたので、参考まで。『テキストデータ処理を簡単にマルチコア対応にするJavaフレームワーク、MCPの実装

最近Rubyの勉強もしている。Ruby関連の本を読んでいると『使いづらい言語』の代表みたいにDISられ気味なJavaだが、この例のように、速度が簡単に出るあたり、すごく魅力がある言語だと思う。

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s