Reference ETS创建返回值
我用的是长生不老药1.6.3。 我正在使用Elixir中的ErlangReference ETS创建返回值,reference,erlang,elixir,ets,Reference,Erlang,Elixir,Ets,我用的是长生不老药1.6.3。 我正在使用Elixir中的Erlang:ets模块,我对:ets.new/2函数的返回值感到有点困惑 根据,当调用:ets.new(:whatever,[])时,应该返回一个看起来是整数值的值: iex> table = :ets.new(:buckets_registry, [:set, :protected]) 8207 但是,当我在iex中运行完全相同的代码时,我得到了一个参考: iex(1)> table = :ets.new(:bucket
:ets
模块,我对:ets.new/2
函数的返回值感到有点困惑
根据,当调用:ets.new(:whatever,[])
时,应该返回一个看起来是整数值的值:
iex> table = :ets.new(:buckets_registry, [:set, :protected])
8207
但是,当我在iex
中运行完全相同的代码时,我得到了一个参考:
iex(1)> table = :ets.new(:buckets_registry, [:set, :protected])
#Reference<0.1885502827.460455937.234656>
iex(1)>表=:ets.new(:bucket\u注册表,[:set,:protected])
#参考文献
那么,自文档编写以来,有什么变化吗?
还是完全一样,我对什么是引用感到困惑?是的,
ets:new
的返回值在Erlang/OTP 20.0中从整数更改为引用。发件人:
OTP-14094应用程序:stdlib
***潜在不相容性***
通过更改表标识符优化ETS操作
键入从整数到引用。该引用启用了
更直接地映射到表,潜力更小
锁争用,特别是创建和
删除表的规模要大得多。
ETS表格不透明类型的更改
标识符可能会导致代码出现故障,从而导致错误
关于这种不透明类型的假设。
存储在一个Erlang节点*上的表数*
受到限制。情况不再如此(除非
内存使用情况)。以前的默认限制大约是
1400个表,可通过设置
启动前的环境变量ERL_MAX_ETS_表
Erlang运行时系统。这一硬限制已被取消
已删除,但当前设置
不管怎么说,都要有一张桌子。它应该设置为
使用的表的最大数量的近似值。这
因为命名表的内部表的大小是使用
这个值。如果使用了大量命名表
而且ERL_MAX_ETS_表没有增加
命名表查找的性能将降低。
非常感谢。我提交了一个请求来更新文档,对吧。