2017-04-01 25 views
1

我使用类型为ordered_set的ETS表,并且行看起来像{{integer_value, string}}(基本上它没有任何价值,唯一的关键)。对``````````````````````````语句使用`ordered_set`有利于降低时间压力

当我执行ets:select(tab, [match_spec])时,match_spec所做的是选择所有行,其中integer_value符合大于和小于理解。

我想知道,是否有益于扫描整个表格,而不是扫描整个表格,在对数时间内找到下限和上限,然后获取所有元素,就像我期望从SQL表中获得的,或者这种功能在ETS中未实现并且使用ordered_set而不是普通set没有特别的好处?

回答

1

简单的方法是使用定时器:tc/3获取您的功能或ets模块的功能执行时间的函数。
您可以配置文件使用fprofeprof代码为undestanding它需要什么功能调用,多少时间执行。
这可以帮助你。
如果你不熟悉二郎分析器,我可以告诉ETS setordered_set与剖析的简单例子。

+0

我已经发现(的话题最后更新于2011年在:))'ets'扫描整个表,无论什么时候,只要将垃圾分类设置与否。但是为了获得信息和“新鲜”的链接而挣扎让我担心今天erlang社区和erlang本身如何活跃 –