青山です。

日本語の部分だけを ' ' に置換するとさらに速くなるので、こんなかんじと
か。GC::start も追加。

class String
  def jlength
    GC::start
    if self =~ /[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/n
      l = self.gsub(/[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/n, ' ').length
    elsif self =~ /[\xa1-\xfe][\xa1-\xfe]/n
      l = self.gsub(/[\xa1-\xfe][\xa1-\xfe]/n, ' ').length
    end
    GC::start
    l
  end
end


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>