【问题标题】: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(),没有后增量(而不是前增量)。刚才提到的所有事情都可能使您的循环(您发布的任何一个)比链接上的方法慢。

标签: c++ performance vector struct


【解决方案1】:

struct 方式更利于清晰和设计,但不一定更快。此外,由于向量的增长行为,通常不赞成使用嵌套向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多