为了保存和访问哈希图中的许多元素,我想测试 Google 的稀疏哈希图:https ://code.google.com/p/sparsehash/
我刚刚使用调试模式编译了 VS2012 中的所有测试和演示。结果非常慢,例如 time_hash_map.exe 打印“map_grow 50053.ns”,平均迭代次数为 10.000.000。好的..现在我在发布模式下编译它,差异是巨大的!地图增长 917.0ns !一开始我以为是因为优化删除了测试程序中的一些东西,但是现在我在自己的程序中实现了dense_hash_map,它真的很慢,而在发布模式下它非常快。
我仍在处理我的程序,在发布模式下调试有时会让人头疼,所以我尝试使用所需的模板参数预编译dense_hash_map。我创建了第二个包含 cpp 文件的库:template google::dense_hash_map<uint64_t, int>;
我已经在发布模式下编译了这个库并将其链接到我的主应用程序,但性能仍然相同 :(
我该怎么做才能只编译这个类(dense_hash_map<key,val>
)并进行优化,而程序的其余部分在编译时没有优化。
我觉得这个巨大的性能提升也是很值得质疑的,我看到了一些不错的优化效果但是这个呢?每次迭代速度快 50 倍。
编辑: 似乎即使禁用运行时检查和启用优化也不会导致与发布模式相同的速度(仍然慢 10 倍),我的新调试模式和原始发布模式之间的唯一区别是 /MT 用于发布和 / MTd 用于我的调试模式。