私には珍しく、カリカリ最適化してみる。*1

  1. injectは遅かったのでeachに変更
  2. 正規表現リテラルを定数に代入して利用
  3. String#+をString#concatに変更
  4. メソッド呼び出しを最小限に
  5. 正規表現を見直して、eachのループ回数を最小限に
  6. 末尾再帰になっているメソッドを手でループに変換

もう無いかな?

多分、flexでも使えば、一気に倍くらいの速度は出そうだけど…

*1:スクリプト言語カリカリもないけど