将`ordered_set`用于`select`语句与`>`和`< =`以降低时间复杂度是否有意义?

时间:2017-04-01 19:41:35

标签: erlang elixir ets

我使用ordered_set类型的ETS表,行看起来像{{integer_value, string}}(基本上它没有值,只有键)。

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

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

1 个答案:

答案 0 :(得分:1)

简单的方法是使用 timer:tc / 3 功能来获取功能或ets模块功能的执行时间。
您可以使用fprofeprof对代码进行分析,以确定调用哪个函数以及执行该函数需要多长时间。
这可以帮到你。
如果您不熟悉erlang分析器,我可以使用分析器显示ets setordered_set的简单示例。