需要在某些快速数据结构中将字符串存储为对象的id

Fli*_*man -1 c c++ algorithm hash map

我正在为Web服务器实现一个会话存储.键是字符串,存储的对象是指针.我尝试使用地图但需要更快的东西.我会查找物体比插入物频繁5-20倍.

我尝试使用哈希映射但失败了.我觉得我有更多的限制而不是更多的空闲时间.

我在Linux下编写c/c ++编码.我不想承诺提升,因为我的网络服务器将会超过提升.:)

这是一个高度相关的问题,因为硬件(ssd磁盘)正在迅速变化.什么是正确的解决方案将不会在2年内.

Leo*_*Hat 5

我打算建议一个map,但我看你已经排除了这一点.

我尝试使用地图但需要更快的东西.

这些是维基百科页面提供的std :: map性能界限:

  • 搜索元素需要O(log n)时间
  • 插入新元素需要O(log n)时间
  • 递增/递减迭代器需要O(log n)时间
  • 迭代地图的每个元素需要O(n)时间
  • 删除单个地图元素需要O(log n)时间
  • 复制整个地图需要O(n log n)时间.

您是如何测量并确定地图未经充分优化的?你看到的任何瓶颈都很可能出现在代码的其他部分,而且map完全足够了.

上述界限似乎符合最严格的可扩展性要求.