【问题标题】:Fast mapping where keys are powers of two (C++)快速映射,其中键是 2 的幂 (C++)
【发布时间】:2016-10-05 20:58:23
【问题描述】:

我有一小组正整数(大约 10 个数字),每个都是 2 的幂。

如何尽快将每个数字映射到其他数字?


这里有两种可行的解决方案,但考虑到问题的简单性(以及我拥有的键数),它们似乎都显得过于缓慢(我错了吗?):

完全避免映射问题,例如,将我的整数替换为将成对组合在一起的结构可能是 最快 解决方案,但它会使我的大部分代码复杂化,所以我不是愿意这样做。

【问题讨论】:

  • 你能把转换表贴上去吗(假设映射不是任意的)?可能有一个聪明的小把戏。
  • @Bathsheba 不幸的是,键映射到的值是随机生成的数字。

标签: c++ data-structures hashmap


【解决方案1】:

不要计算任何东西。低级缓存的 int 比较不​​能超过 10 次。

只需有一个包含您的值的向量并运行一个循环来查找您想要的数字的索引,并使用该索引在另一个向量中查找数据的重置。

为了提高性能,最好将键 int 靠得很近,这样您就可以充分利用处理器缓存。但是,如果您有成对的向量或类似的东西,它不会慢很多。您应该尝试做一个基准测试,看看您是否真的需要最后一滴性能,或者您是否可以牺牲一点性能来简化数据结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    相关资源
    最近更新 更多