哪种方式更快? [关闭]

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 方式更利于清晰和设计,但不一定更快。此外,由于向量的增长行为,通常不赞成使用嵌套向量。

【讨论】:

以上是关于哪种方式更快? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py - 我应该选择哪种方式? [关闭]

哪种是临时保存原始数据的最佳方式? [关闭]

生产中使用哪种MySQL启动关闭方式

哪种服务器适用于 VueJS [关闭]

Angular 2框架是用哪种语言开发的? [关闭]

打开脚本文件进行编辑的更快方法[关闭]