eachに時間がかかってるように見えて、
単にブロックで(メソッド呼ばない)重たい処理やってる可能性もアリ。

$ ruby -rprofile -e '[0].each{ while true; end }'
(^Cで止め)
% cumulative self self total
time seconds seconds calls ms/call ms/call name
100.00 7.72 7.72 1 7721.00 7721.00 Array#each

こんな表示になるし。