basE91という符号化方式を最近知った。Base64のような感じで91文字使うというもの。1文字のバリエーションが多いので、Base64より膨張率が低いのが特徴だ。C,Java,PHPあたりの実装が公開されている。 http://base91.sourceforge.net/ ちょっとJavascriptから使いたいことがあったので、実装を探したところJavaからの移植版があったんだが、ちょっと遅い…*1。 というわけで移植し直して、アルゴリズム以外のところでできるだけ速くしてみた。 http://no18.info/~kazy/javascript/base91.html encode/decodeのテストと繰り返し実行時の時間計測ができるようになっている。一応UTF-16⇔UTF-8変換をして日本語も通るようにした。 dankogaiさんの正規表現使ったBase64実装とも比較できる