Is there a reason (performance, memory, typesystem) why a Tuple is not a HList and Function is not a mapping form a HList to some value?
2 に答える
7
パフォーマンスとメモリの両方。タプルはO(1)
その要素にアクセスできます。通常作成されるように、HList
はリストであるため、がありO(n)
ます。n
また、タプルには、他のオブジェクトへの参照を持つ1つの追加オブジェクト用のメモリが必要ですが、 HList
(リストとして)それぞれ1つのオブジェクト(およびnext
ポインタ)が必要です。オブジェクトのオーバーヘッドは約2つの参照であるため、これによりn+2
メモリ使用量がに変わります4n+2
。コア言語構造としてはそれほど素晴らしいものではありません。
于 2013-01-24T12:05:12.550 に答える
2
AnyValを拡張するHArrayには、TupleXクラスと同等のパフォーマンスとメモリ要件があります。唯一のオーバーヘッドは、配列の長さと配列のインデックス境界チェックです。
于 2013-01-24T12:25:01.257 に答える