TypedArray と ArrayBuffer って何?どうして必要なの?
ArrayBuffer とは TypedArray とは
直接の読み書きは不可能!
view を通してアクセスすることが可能
Uint8Array, Int32Array, Float61Array, ...
code:ts
Int8Array // 8bit 符号付き整数(-128 ~ 127)
Uint8Array // 8bit 符号なし整数(0 ~ 255)
Uint8ClampedArray // 8bit クランプ付き(範囲外を0/255に丸める)
Int16Array // 16bit
Uint16Array // 16bit 符号なし
Int32Array // 32bit
Uint32Array // 32bit 符号なし
Float32Array // 32bit 浮動小数点
Float64Array // 64bit 浮動小数点
BigInt64Array // 64bit BigInt
BigUint64Array // 64bit BigInt 符号なし
U prefix は unsigned のことで符号なしのこと
int や float はデータの型
数字は要素のデータサイズのことで、これが大きくなると要素数も少なくなる
なんか雰囲気のイメージだと ArrayBuffer そのものには用がないというか、名前の通り buffer であって、そこでなんらかの場所をバッファしておく メモリとかアドレスみたいな話になってくるけど ArrayBuffer であらかじめ?指定したバイト数から TypedArray で指定した型に応じてそのバイト数を分割というかしていく そもそも何が嬉しいの TypedArray の
TypedArray の嬉しさは型が決まった array であるということ、配列長も固定であるということ それに対して TypedArray は連続したメモリでかつバイナリなので速いし効率もいいらしい ので当時は Array にぶち込んでいた
1 byte なのに要素ごとのオーバーヘッドがかかってメモリが膨らむ
連続した生メモリではなく、GPU やファイル API にそのまま渡すことができなかった TypedArray は「型を数値に固定して、連続した生メモリ(ArrayBuffer)を直接持つ」という割り切りをしている
また、binary を直接扱うことができるので各種 API の共通通貨になる
いつどうして生まれたのか
2009 ~ 2011 頃に WebGL ができて?、Array(既存の)が遅すぎて話にならなかったそう ブラウザで先述の Web API を本格的に扱うことになり、バイト列を素直に持てる型が必要になった