【发布时间】:2016-01-29 16:43:39
【问题描述】:
我正在构建一个小型 2d 游戏引擎。现在我需要存储游戏对象的原型(所有类型的信息)。我猜一个容器最多有几千个元素,所有元素都具有唯一键,并且在第一次加载后不会删除或添加任何元素。键值是一个字符串。
各种线程将运行,我需要向每个人发送一个密钥(或索引),并通过该访问权限访问仅对这些线程可用的其他信息(如渲染进程的纹理或混音器进程的声音)。
通常我使用向量,因为它们访问已知元素的速度更快。但是我看到,如果我使用 ::at 元素访问,无序映射通常也具有恒定的速度。这将使代码更简洁,也更易于维护,因为我将处理更易于理解的人造字符串。
所以问题是,访问vector[n] 与unorderedmap.at("string") 之间的速度差异与他的收益相比可以忽略不计?
据我了解,在程序的不同部分访问各种地图,不同的线程只用一个“名称”运行对我来说很重要,而且速度差异不是很大。但我太缺乏经验,无法确定这一点。虽然我发现了有关它的信息,但我似乎无法真正理解我是对还是错。
感谢您的宝贵时间。
【问题讨论】:
-
唯一真正了解的方法是尝试每一个并测量。
-
Trie 是另一种选择,如果您将字符串保留在键上。
-
请务必忽略有关缓存的错误答案。
标签: c++ c++11 vector unordered-map