c – 我应该缓存用作哈希键的STL字符串的哈希码吗?

c – 我应该缓存用作哈希键的STL字符串的哈希码吗?,第1张

概述我正在对我开发的软件进行一些性能分析,并且我发现URL的全局字典上的查找大约占应用程序“加载”阶段时间的10%.字典实现为C STL std :: map,具有O(lg n)个查找.我要将它移动到hash_map,它具有大致固定的时间查找. stl字符串类没有哈希代码属性,它肯定不会缓存哈希代码.这意味着每次查找都需要重新生成哈希码. 我怀疑缓存哈希码是值得的.这将意味着更改许多代码行以使用具有缓 我正在对我开发的软件进行一些性能分析,并且我发现URL的全局字典上的查找大约占应用程序“加载”阶段时间的10%.字典实现为C STL std :: map,具有O(lg n)个查找.我要将它移动到hash_map,它具有大致固定的时间查找. stl字符串类没有哈希代码属性,它肯定不会缓存哈希代码.这意味着每次查找都需要重新生成哈希码.

我怀疑缓存哈希码是值得的.这将意味着更改许多代码行以使用具有缓存哈希代码属性的新字符串类.鉴于当前实现在每次查找时都会记录(n)完整的字符串比较,我认为每次查找将其减少到基本上一次字符串遍历(通过散列函数)是一个很大的胜利.

有没有人有缓存字符串哈希码的经验?有没有证明值得付出努力?

解决方法 我没有缓存哈希码的经验,但我最近做了一些工作,将std :: map转换为std :: tr1 :: unordered_map.想到两个想法.首先,尝试首先分析相对简单的更改,因为它有时会使事情变得更糟,这取决于您的代码正在做什么.在您尝试进一步优化之前,它可能会为您提供足够的加速.其次,您的探查器对其他90%的初始化时间有何评论?即使您将全局字典内容优化到0次,您最多也可以将性能提高10%. 总结

以上是内存溢出为你收集整理的c – 我应该缓存用作哈希键的STL字符串的哈希码吗?全部内容,希望文章能够帮你解决c – 我应该缓存用作哈希键的STL字符串的哈希码吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1257855.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存