« TJS2バイトコードの注意点 | メイン | Array/Dictionary のバイナリ形式フォーマット »

2013年03月04日

吉里吉里 その他の開発日誌:: Array/Dictionary のバイナリ読み書き対応

    

Array/Dictionary のバイナリ読み書き対応したものをここに置いておく。

動作確認はしているが、詳細なテストはまだ。
Array/Dictionary の saveStruct の第2引数に "b" を入れると、バイナリ形式で書き出される。
後は、書き出されたファイルを eval でもして読み込めば使える。
KAG3 の保存モードで、"b" を指定すればそのままバイナリ形式対応になる。
読込みもそのまま可能なので、c や z 以外に b が追加されただけのように扱える。
それ以外に Dictionary のコンストラクタに引数を一つ追加可能になっていて、Dictionary に格納予定の個数を指定することでハッシュのサイズをあらかじめ大きくしておけるような変更が入っている。
ただし、即座に追加しないと次の RebuildHash で縮まるのでとりあえず大きくしておくようなことには使えない。
assign / assignStruct でも追加予定サイズでハッシュのサイズを大きくしておく修正も入っている。
これによって大量にデータが追加される時速度向上が期待されるが、数が少ない場合 RebuildHash が走ることで速度低下が起こりうる。

ラベルが大量 ( 数万 ) にあってセーブデータの読込みが遅い場合、劇的に高速化されるが、少ない場合効果は薄い。
データ読込みの高速化により起動速度は少し向上しているが、目に見えて早くなっているかというと誤差とも言える範囲。

Dictionary の引き数追加は、元々引数を書いていたら例外が発生していたので、互換性の面では問題ないが、仕様の変更が好ましいかどうかは難しいところ。
また、データが少ない時は大して速度向上の効果が得られないので、この機能追加は微妙。

テスト工数を考えると自分としては要らないかなと思うところなんだけど、必要な人はいるかな?



投稿者 Takenori : 2013年03月04日 23:46




comments powered by Disqus
Total : Today : Yesterday : なかのひと