此页面包含 ETS 基准测试的结果,展示了新的 ETS ordered_set
实现的性能和可伸缩性。新的 ETS ordered_set
实现仅在将选项 {write_concurrency, true}
传递给 ets:new
函数时启用。在添加新的实现之前,write_concurrency
选项与 ordered_set
结合使用时对创建的表没有影响。以下论文描述了新的 ETS ordered_set
实现所基于的数据结构(争用自适应搜索树)
一种用于并发有序集合的争用自适应方法。《并行与分布式计算杂志》,2018 年。Kjell Winblad 和 Konstantinos Sagonas。(出版商,预印本)
使用自适应的更可伸缩的 ETS 有序集合。在第十三届 ACM SIGPLAN Erlang 研讨会 (2014) 上。Kjell Winblad 和 Konstantinos Sagonas。(出版商,预印本)
ets_SUITE:throughput_benchmark/0
中(请参阅“$ERL_TOP/lib/stdlib/test/ets_SUITE.erl
”)。以下是操作的简要描述列表ets:insert/2
调用,其中键范围内的随机项作为第二个参数值ets:remove/2
调用,其中键范围内的随机项作为第二个参数值ets:lookup/2
调用,其中键范围内的随机项作为第二个参数值ets:lookup/2
调用,其中键范围内的随机项作为第二个参数值ets:next/2
调用的序列。第一个 next
调用以键范围内的随机项作为第二个参数值,其他 next
调用以前一个 next
调用的结果作为第二个参数值。ets:select_count
调用,用于计算表中所有项目的数量ets:select_count
调用,用于计算大小为 X 的随机范围内的所有项目的数量
机器
Microsoft Azure VM 实例:Standard D64s v3(64 个 vcpu,256 GB 内存)
操作系统
Description: Ubuntu 18.04.2 LTS Linux version: 4.18.0-1014-azure
Erlang 参数
erl +sbt tnnps
此页面从 ETS 基准测试生成的数据生成图表,该基准测试在函数 ets_SUITE:throughput_benchmark/0
中定义(请参阅“$ERL_TOP/lib/stdlib/test/ets_SUITE.erl
”)。
请注意,可以将多个基准测试运行的结果粘贴到下面的字段中。来自同一场景但来自不同基准测试运行的结果将被重新标记,并自动绘制在同一图中。这使得比较不同 ETS 版本变得容易。
另请注意,可以通过单击相应的标签来隐藏线条。
将生成的数据粘贴到下面的字段中,然后按“渲染”按钮[ordered_set,public,{write_concurrency,true},{read_concurrency,true}]
[set,public,{write_concurrency,true},{read_concurrency,true}]