类型集表和ordered_set类型表之间有什么区别?我对读/写性能的差异,基于排序的内容,跨分布式节点的影响等感兴趣。
答案 0 :(得分:7)
排序基于主键,这意味着ordered_set表在使用复杂主键进行匹配/选择迭代时要快得多。例如,如果您的记录看起来像{{Key, Val1}, Val2}
,则可以匹配或选择Key
,以便在每次Val1
出现时快速获得Val2
和Key
。除此之外,我不知道读/写速度的显着差异。
也可以对ordered_set表进行分段,但这意味着迭代将部分排序,但不是完全排序的。对单个片段进行迭代是有序的,但是从片段到片段的顺序是未定义的。
答案 1 :(得分:1)
只要订购来自消息来源:
add_element(E, [H|Es]) when E > H -> [H|add_element(E, Es)];
add_element(E, [H|_]=Set) when E < H -> [E|Set];
add_element(_E, [_H|_]=Set) -> Set; %E == H
add_element(E, []) ->[E].
因此,排序看起来像一个直的&lt;或者&gt;元素的比较。
除了订购之外,它与套装完全相同。因此我猜测,对于较低“值”的元素,查找平均值会比集合更快。但除此之外,我不确定。
由于Erlang与进程无关,并且不允许进行变量修改,因此跨分布式节点的效果应与本地节点相同。
警告:
我没有对这两种类型进行任何基准测试,所以这是我对性能的猜测。