JRubyとCRuby: 処理量を変えてみた

JRubyがCRubyに比べて遅すぎる件について - なぜか数学者にはワイン好きが多い

Hadoop Streamingを通さない時はJRubyの方が速かったので,ひょっとしたら処理量が多い時はJRubyがCRubyに(Hadoop Streamingでも)勝つんじゃないかと思って,喰わせるログの量を増やしてみました.

まず,元の状態.
喰わせるログの量は,だいたい非圧縮で8ギガバイトです.Hadoopに仕事をさせるには,少なめな感じです.
その状態で,

CRuby: 6分23秒
JRuby: 7分57秒

というのが前回のHadoop Streamingの結果です.

処理量を増やすために,ログを2倍突っ込んでみました!

[hadoop@hadoop_client$ time hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.0.0-cdh4.4.0.jar -file log_access.rb -mapper '/usr/local/jruby/bin/jruby log_access.rb'  -input input/access_log input/access_log -output output 

14/01/20 15:13:14 INFO mapred.FileInputFormat: Total input paths to process : 2
14/01/20 15:13:14 INFO mapreduce.JobSubmitter: number of splits:266

real    14m56.785s
user    0m8.644s
sys     0m0.346s



[hadoop@hadoop_client$ time hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.0.0-cdh4.4.0.jar -file log_access.rb -mapper '/usr/local/bin/ruby log_access.rb'  -input input/access_log input/access_log -output output 

14/01/20 16:05:46 INFO mapred.FileInputFormat: Total input paths to process : 2
14/01/20 16:05:46 INFO mapreduce.JobSubmitter: number of splits:266

real    12m16.612s
user    0m8.198s
sys     0m0.280s

結果,処理するログファイルの量を倍にしたところ,CRubyは処理時間は6分23秒→12分16秒,JRubyは7分57秒→14分56秒でした.
割合で言うと,CRubyは1.9倍,JRubyは1.88倍で,JRubyの方が,少しだけデータが2倍になっても処理時間が2倍にはなってない的な...いや微妙過ぎる...文字列のパースについてはCRubyが速すぎるのだろうか...