使用快速磁盘存储(SSD)进行优化的算法?

Pau*_*ier 10 algorithm optimization performance solid-state-drive hashtable

鉴于固态硬盘(SSD)的价格正在下降并且很快将变得更加普遍,因为它们的访问速率明显高于旋转磁介质,那么标准算法将通过使用SSD来获得性能存储?例如,SSD的高随机读取速度使得类似于基于磁盘的散列表具有大型散列表的可行性; 容易获得4GB的磁盘空间,这使得散列到32位整数的整个范围都是可行的(更多的是查找而不是人口,但这仍然需要很长时间); 虽然由于访问速度的原因,这个哈希表的大小将无法与旋转媒体一起使用,但它不应该是SSD的问题.

是否有任何其他领域即将过渡到SSD将提供算法性能的潜在收益?我宁愿看到关于一件事情如何发挥而不是舆论的推理; 我不希望这变成有争议的.

SPW*_*ley 15

您的哈希表示例确实是受益的关键数据库结构.可以直接探测SSD,而不必将整个4GB或更多文件加载到内存中以探测值.固态硬盘仍然比RAM要慢一个数量级,但是在磁盘上有一个50GB的哈希表是合理的,但除非你为大铁支付大笔钱,否则不在RAM中.

一个例子是象棋位置数据库.我有超过50GB的散列位置.有一些复杂的代码试图在散列中将相关位置分组到彼此附近,因此我可以一次分页10MB,并希望将其中的一些重用于多个类似的位置查询.为了提高效率,需要大量的代码和复杂性.

替换为SSD,我能够放弃集群的所有复杂性,只使用非常愚蠢的随机哈希.我也提高了性能,因为我只从磁盘中获取所需的数据,而不是大的10MB块.延迟确实更大,但净加速是显着的...而超级干净的代码(20行,而不是800+)可能更好.