相关疑难解决方法(0)

C++:访问大型数据集中的重要成员变量的最有效和简洁的方法

我有一个类,如A包含一个类型的非平凡成员变量LargeType:

class A {
public:
    LargeType SetVariable(LargeType var){_var = var;}
    LargeType GetVariable(){return _var;}
private:
    LargeType _var;
};
Run Code Online (Sandbox Code Playgroud)

我遍历一个非常大的数据集,并在每次迭代中检索一个a类型的对象A.我发现以下代码(每次迭代至少发生一次):

//---- Version#1
LargeType var = a.GetVariable();
if(anotherLargeType == var){ DoSomething();}
DoOperation(var);
Run Code Online (Sandbox Code Playgroud)

运行速度比以下代码慢:

//---- Version#2
if(anotherLargeType == a1.GetVariable();){ DoSomething();}
DoOperation(a1.GetVariable());
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么版本#1比版本#2运行得慢:每次迭代都会调用一个复制构造函数,因此需要做更多的工作.但是,我认为版本#1处理起来更好,而不是必须a1.GetVariable()在一个循环中输入多次.有没有办法重写我的类,以便版本#1和版本#2的性能可比?

c++ performance

0
推荐指数
1
解决办法
80
查看次数

标签 统计

c++ ×1

performance ×1