我知道float
和double
之间的最快类型取决于本机ALU实现,它通常基于双精度。当您基于逆向精度进行计算时,ALU 必须始终执行相应的精度转换。
那么,为什么标准选择float
来代表load_factor
呢?我想这是为了节省对哈希表容器的内存思考,但我想知道是否有更充分的理由。
这发生在原始提案的修订版 3 中:
将载客率操作更改为使用
float
而不是double
后面给出了基本原理(在"E. 控制哈希大小调整"下(:
浮点参数应该是
float
类型,还是double
类型?这几乎没有区别。一方面,double
通常是在没有强烈相反理由的情况下使用的"自然"浮点类型。另一方面,float
可能允许哈希表实现节省一些空间,并可能提醒用户不会在任何涉及高精度的上下文中使用该值。我选择了float
.
所以基本上你说的。
至于性能,提到了这一点,以及它在宏伟的计划中并不重要(尽管在捍卫使用浮点数与整数的上下文中(:
运行时浮点参数的开销是每次重新哈希(不是每次插入(时进行一次浮点乘法。即使使用增量哈希,这几乎肯定会与重新哈希的成本相形见绌。