Erlang 将'select'语句中的'ordered_set'与'>;'一起使用有意义吗和`<;=`降低时间竞争性

Erlang 将'select'语句中的'ordered_set'与'>;'一起使用有意义吗和`<;=`降低时间竞争性,erlang,elixir,ets,Erlang,Elixir,Ets,我使用类型为ordered_set的ETS表,行看起来像{{integer_value,string}}(基本上它没有值,只有键) 当我执行ets:select(tab,[match_spec])时,match_spec所做的是选择所有行,其中整数值满足大于和小于理解 我想知道,我是否能从中受益,而不是扫描整个表,在对数时间内找到上下限,然后得到中间的所有元素,就像我从SQL表中所期望的那样,或者此类功能未在ETS中实现,并且使用有序集代替普通的集并没有特别的好处?简单的方法是使用定时器:tc/

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

当我执行
ets:select(tab,[match_spec])
时,
match_spec
所做的是选择所有行,其中
整数值
满足大于和小于理解


我想知道,我是否能从中受益,而不是扫描整个表,在对数时间内找到上下限,然后得到中间的所有元素,就像我从SQL表中所期望的那样,或者此类功能未在ETS中实现,并且使用
有序集
代替普通的
并没有特别的好处?

简单的方法是使用定时器:tc/3函数获取您的功能或ETS模块功能的执行时间。
您可以使用或了解调用的函数及其执行所需的时间来分析代码。
这可以帮助您。
如果您不熟悉erlang探查器,我可以用探查器展示ets
set
ordered\u set
的简单示例。

我已经发现(在2011年更新的主题中:)
ets
无论何时都会扫描整个表,无论它是排序集还是非排序集。但获取信息和链接“新鲜度”的斗争让我担心erlang社区和erlang本身今天有多活跃