darts-clone 改良中

新しいアイデアを思いついたので,darts-clone を改良しています.

現在の darts-clone では,設計段階で小規模なデータを想定していたため,大規模なデータに対しては HugeDoubleArray で対応するようになっています.その実装は, 5 bytes も割り当てれば十分に足りるのに,無駄に 8 bytes を割り当てるという「やっつけ仕事」です.結果として,HugeDoubleArray に切り替えた途端にメモリ消費が大幅に増えてしまいます.また,DoubleArray と HugeDoubleArray のどちらを使うべきかを選択する基準が「ダメだったら」という適当なものであり,ユーザに無駄な判断を要求していました.

これに対し,新しいバージョンでは,設計段階で 3000 万件という規模を想定してあり,4 bytes の割り当てで処理する予定です.計算がややこしくなるという欠点はあるものの,従来は HugeDoubleArray を使っていたような大規模なダブル配列を,よりコンパクトに実現できることでしょう.ただし,実装できたらの話ですが….

※ ○ bytes というのは各要素のサイズを示しています.

新しいアイデアにいたる切っ掛けをくださった n-yo さんには感謝しています.