情報量
#圧縮
https://ja.wikipedia.org/wiki/情報量
JavaScriptの例
JavaScriptのコード・deflateによる圧縮で例示する
元のコード
例えば、以下のようなコードが存在するとする:
code:js
gl.texParametri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST )
gl.texParametri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST )
手で圧縮
手で圧縮するとこう:
code:js
gl.texParametri(3553,10240,9728);gl.texParametri(3553,10241,9728)
これをdeflateにすると、65 bytes -> 40 bytes になる
mapにする
gl.texParametri の箇所が繰り返しだなあと思い、mapにする:
code:js
10240,10241.map(g=>gl.texParametri(3553,g,9728))
これをdeflateにすると、50 bytes -> 49 bytes
どゆこと
後者には文章の繰り返しがないので小さくならない
前者には、以下のような要素がある
gl.texParametri という関数
関数の叩き方
定数値
セミコロン ; で関数の間を区切る
対して、後者には、以下のような要素がある
配列の使い方
map という配列のメソッド
ラムダ関数の定義の仕方
gl.texParametri という関数
関数の叩き方
定数値
後者のほうが実コードは短いが、その代わり、いろいろなことが起きている
このような繰り返しの処理は、圧縮アルゴリズムにおまかせしたほうが良い場合もある