我了解到float
和double
之间最快的类型取决于本地ALU实现,该实现通常基于双精度。在基于逆向精度进行计算时,ALU必须始终进行相应的精度转换。
那么,为什么选择float
来表示load_factor
的标准?我想是为了节省哈希表容器上的内存,但我想知道是否有更强的理由。
答案 0 :(得分:6)
这发生在revision 3 of the original proposal:
已将负载系数操作更改为使用
float
而不是double
稍后会给出基本原理(在“ E.控制哈希大小调整”下):
浮点参数应为
float
类型还是double
类型?差别不大。一方面,double
通常是在没有充分相反理由的情况下使用的“自然”浮点类型。另一方面,float
可以允许哈希表实现节省一些空间,并且可以提醒用户以下事实:该值将不会在涉及高精度的任何上下文中使用。我选择了float
。
基本上就是你所说的。
关于性能,这里提到了它以及它在宏大的事物方案中实际上并不重要的问题(尽管在捍卫使用浮点数 versus 整数的上下文中):
运行时浮点参数的成本是每次重新哈希(每次插入并非)都进行一次浮点乘法。即使使用增量哈希,也几乎可以肯定,这与重新哈希的成本相形见。