kos*_*hei 4 c++ java optimization performance data-structures
如果我有一组我希望能够按名称查找的对象,我当然可以使用{ string => object }
地图.
是否有理由使用对象矢量和{ string => index into this vector }
伴随地图?
多年来我见过许多开发人员这样做,而且我在很大程度上认为这表明开发人员不熟悉地图,或者其他方面感到困惑.但是最近几天,我开始自我猜测,我担心我可能会错过一个潜在的优化或者其他什么,虽然我不能为我的生活找出可以优化的东西.
我能想到的原因有一个:
除了按名称查找对象外,有时您还希望尽可能高效地遍历所有对象.使用map + vector可以实现这一点.通过索引访问向量会产生很小的代价,但是通过迭代向量而不是映射可以获得很大的性能提升(因为向量在连续内存中并且对缓存更友好).
当然你可以使用boost :: multiindex做类似的事情,但这对对象本身有一些限制.