2023-01-13
未解決のエネルギー問題。同じ機能ならより高速なほどエネルギー使用量は少なく、即ち環境負荷が低いです。wasm2cでネイティブからわずか8%しか速度低下がないという情報に衝撃を受け、WebAssemblyをもっと使うべく環境を整えました。JSONなどにバイナリを埋め込みたい時にも、14%増加する7bitで変換でき、33%増加する6bitのBase64より14%お得です!

JavaScriptと合わせて使うWASMファイルをJavaScriptからimportして使えるJavaScript形式に変換するbin2jsの標準エンコード形式として、Base64より14%コンパクトになり、高速エンコードデコードに対応したBase128を、Base122のアイデアを使って作成。Ruby言語の構文解析「RubyParser」のコアのWASMを元の721KBから213KBまで減りました!


「Base128 encoding (UTF-8 space efficiency 8/7)」

Base64と同じ用に使えます。文字列はダブルクォートで囲って使ってください。Base122で文字化けすることがある問題を使用するコードを調整することで回避し、エディタで変換されるリスクがあるタブもエスケープするようにしました。エスケープするというより置き換えているので、Base121ではなくそのままBase128という名前にします。7bitらしさがありますね。


「Base128.test.str.js」

バイナリデータはこんな感じでブラウザやエディタ間でコピペ可能な文字列へと変換されます。コンソールへの貼り付けや、コンソールでの表示では文字化けてしまうのでご注意ください。

Base64より14%お得なBase128でエコ開発!

links
- Base64より効率良いBase122の有効性チェックとbin2js改良によるWASMインポート
- 東京都副知事宮坂さん訪問、Base128を作って分かったBase122の良さとUTF-8の2byte文字
- エンコード方式 base-122 | POSTD
- Base-122 Encoding

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS