最近有些空,继续捣鼓consisten hash的简单实现。先前修改gb_trees,加入了lookup_nearest(Key, Tree) 函数,通过二叉查找和回朔,来查找最接近Key的项。昨天看了下xbaytable的DHT实现,发觉其实用ets会更快捷:
ets:prev(Table, Key) 和 ets:next(Table, Key) 函数,可以返回Table中Key的上一个或下一个存在的键,无论这个Key是否存在于Table中。再加上 ets:first/1、ets:last/1、ets:lookup/2,就可以实现了。
实践过程中发现了个问题,需要定义这个哈希范围的最大值,比如 0xFFFFFFFF (4294967295),才能正确比较环中最接近的一个点,比如环里面有两个Key:{4294960010,10},对于 4294963657,最接近的是 4294960010,而对于4294963658,最接近的是10。原先使用二叉查找的实现忽略了这个问题,会导致查找4294960011会返回10。
ets是使用c代码实现,性能和内存占用比gb_trees好很多,构造429497个元素的ets,操作在几秒内完成,而gb_trees起码要几十秒,完全不在一个量级。不过查找最接近的值耗时就很接近,查找4294968次,gb_trees实现花了61875ms,ets实现花了65031ms,结果很接近。
此外还有一个问题,就是在使用next,prev过程中碰到了‘锁’的问题,毕竟ets是一种共享的存储结构。文档说明:
引用
Unless a table of type set, bag or duplicate_bag is protected using safe_fixtable/2, see below, a traversal may fail if concurrent updates are made to the table. If the table is of type ordered_set, the function returns the next key in order, even if the object does no longer exist.
对ets和dets的使用还是太少了,抽空再写写代码加深认识
===================
4.2修改:搞错单位了,应该是1ms内可以调用50多次。。。
分享到:
相关推荐
总之,ETS5中文免费试用版为KNX系统的设计和调试提供了强大的工具,尤其是对于那些需要处理多个项目或者设备数量较多的用户,它提供了极大的便利性和成本效益。同时,中文界面使得国内用户能更轻松地掌握这款专业...
ETS,全称是Engineering ToolSoftware,是由KNX协会开发的一款专业工具,用于设计、配置以及调试基于KNX技术...通过深入理解和熟练使用ETS,用户可以充分发挥KNX技术的优势,打造更加智能化、节能化的居住和工作环境。
6. **兼容性**:ETS5支持多种操作系统,如Windows 7及更高版本,满足不同用户的使用需求。 7. **培训与支持**:ETS5界面友好,适合初学者和专家使用。同时,KNX协会提供了丰富的在线资源和教程,帮助用户掌握软件的...
### ETS 中文教程:KNX 施耐德 智能家居 #### 知识点一:ETS软件概述与启动 ETS(Engineering Tool Software)是施耐德电气开发的一款专业设计工具,主要用于构建和配置基于KNX标准的智能家居和楼宇自动化系统。...
总的来说,ETS最新版软件仿真软件是KNX系统开发、调试和维护过程中不可或缺的工具,它的最新版本通常会引入更多改进和新特性,提高工作效率和系统的可靠性。无论是专业工程师还是初学者,掌握ETS的使用都将对KNX项目...
### ETS3安装使用说明详解 #### 一、软件安装 **1.1 安装启动** - **启动安装:** 打开`Ets30f`文件夹,找到并运行`Ets3ProSetup.exe`来启动安装过程。 **1.2 语言设置** - **语言选择:** 在出现的语言选择...
7. **故障排查**:教授如何利用ETS5的诊断功能,查找并解决系统中的故障,如设备离线、通信错误等常见问题。 8. **项目备份与更新**:讲解如何备份已完成的项目,以及在设备或系统改动后如何更新项目。 9. **实际...
这个版本主要是为教育和学习目的而设计的,提醒用户在商业环境中应使用官方正版软件,以确保合法性和获得全面的技术支持。 KNX(欧洲安装技术)是一种国际标准(ISO/IEC 14543-3),广泛应用于建筑自动化,包括智能...
ETS300_364手册是一份详尽的文档集合,主要针对ETS300与ETS364测试机的使用和维护。这个压缩包包含26个PDF文件,涵盖了从硬件配置到软件系统,再到测试程序开发的全方位内容。下面我们将深入探讨这些关键知识点。 1...
4. **诊断与测试**:在调试过程中,ETS3可以帮助检测网络中的错误,如通信故障、设备状态异常等。它还提供了模拟工具,可以在实际安装前验证程序的正确性。 5. **文档生成**:ETS3可以自动生成项目报告和用户手册,...
在Erlang编程环境中,ETS(Erlang Term Storage)和Dets(Disk-based ETS)是两种重要的数据存储机制,它们提供了高效的数据管理和访问功能。这篇文章将深入探讨这两个概念,以及它们在实际开发中的应用。 ETS是...
ETS,全称可能是“Enterprise Textile System”或特定领域的...综上所述,ETS操作手册是制衣行业从业人员的得力助手,通过深入理解和熟练运用手册中的知识,可以提升工作效率,优化生产流程,实现更有效的业务管理。
ETS5(KNX Engineering Tool Software)是KNX协会推出的一款专业的智能家居控制系统编程软件,主要用于设计、配置、调试和诊断基于KNX技术的智能建筑系统。KNX是一种国际标准(ISO/IEC 14543-3),广泛应用于楼宇...
在实际开发中,ets库通常与其他前端构建工具(如Webpack或Gulp)结合使用,通过配置脚本自动执行上述步骤。这样,开发者可以在开发阶段就进行翻译工作,而不是等到项目接近完成时才匆忙处理。 标签“前端开源”表明...
5. **自动化脚本**:ETS支持GVL(Group Value Link)脚本,允许用户编写自定义逻辑,实现自动化控制,提高系统的灵活性和效率。 6. **兼容性**:ETS 5.6.5兼容多种操作系统,如Windows 7、8和10,确保在不同工作...
Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。Ets5 V5.5.4简体中文版下载。
然而,在这个场景下,“ETS版本”可能指的是使用Eiffel语言实现的一个轻量级音乐播放器的特定版本,这表明该播放器可能注重代码的可读性、可维护性和测试覆盖率。 首先,我们来了解一下OpenHarmony中的音频框架。...
KNX是一种国际标准(ISO/IEC 14543-3),它允许不同厂商的设备在一个网络中互相通信,实现照明、温控、遮阳、安防等系统的集中控制。 在版本5.7.4中,ETS5 Professional提供了一系列增强的功能和优化,以提升工程师...
将哈希表调整到2^32个桶,并由Judy数组管理,可以产生最一致的性能改进,并且仅使用比常规哈希表多约6%的内存。这种技术不仅适用于Erlang环境下的ETS表,还可能对其他应用程序带来实质性的性能提升。特别是对于那些...