哪种方式更快? [关闭]
Posted
技术标签:
【中文标题】哪种方式更快? [关闭]【英文标题】:Which of this ways is faster? [closed] 【发布时间】:2015-04-18 17:02:28 【问题描述】:我想知道这两种方法哪个更快:
方法一:类结构:
//The Struct
struct element
Element* elementPtr;
uint map;
std::string name;
Vector3 pos;
long type;
//Type of container
std::vector<element> elementVctr;
//Finding method
for(uint ix = 0, ix < elementVctr.size(); ix++)
if(elementVctr[ix].name == "nameToFind")
return elementVctr[ix].name;
break;
方法二:矢量类:
std::vector<std::vector<std::string>> elementVctr;
//Every element is this elementVctr[x], and its properties elementVctr[x][y]
//Finding Method
for(uint ix = 0, ix < elementVctr.size(); ix++)
if(elementVctr[ix][4] == "nameToFind")
return elementVctr[ix][4];
break;
我一直在使用vectorLike,因为这是我知道的唯一方式,但现在我已经学会了如何使用结构,我认为它们应该比我的vector方式更快。
另一个问题是,是否有任何其他方式比我的查找方式执行得更快,可以查看向量内部并检查它是否是我正在查找的内容?
感谢您的回答,那么您认为使用向量的向量和使用迭代应该执行更快的响应时间?
【问题讨论】:
分析一下你就知道了。 如果你想要速度,别忘了使用vector iterators。它们比具有索引访问的常规 for 循环快得多。 你看错东西了。使用结构是为了清晰,而不是为了性能。在性能方面,两种方式都可能更快;哪个更快完全取决于你的访问模式,所以只能通过测量来发现。 试试这个:ideone.com/dEKdFm 没有手写循环,没有调用size()
,没有后增量(而不是前增量)。刚才提到的所有事情都可能使您的循环(您发布的任何一个)比链接上的方法慢。
【参考方案1】:
struct 方式更利于清晰和设计,但不一定更快。此外,由于向量的增长行为,通常不赞成使用嵌套向量。
【讨论】:
以上是关于哪种方式更快? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章