我的项目中指向int的速度问题
speed issue in my project from pointing to an int
我正在做一个项目,在这个项目中,大量对象相互交互。我的代码出现了性能问题。假设它具有如下所述的结构。
有一个类(我们称之为"a")是这样的:
class A
{
/*Some methods and variables*/
public:
const int* getPointerToTime() { return &mTime; }
private:
std::vector<B> mBList;
int mTime;
}
然后是像这个一样的"B"类
class B
{
/*Some methods and variables*/
public:
B(A* myA) { mTime = myA->getPointerToTime(); }
int getTime() { return *mTime; }
private:
std::vector<C> mCList;
const int* mTime;
}
然后还有另一个类"C",它有一个方法("update"),将在程序的每个循环中调用。像这样:
class C
{
/*Some methods and variables*/
public:
C(B* myB) { mMyB = myB; }
void update()
{
int t = mMyB->getTime();
/*some things to do here with "t"*/
}
private:
B* mMyB;
}
因此,基本上在类"a"中有大量的"B"对象,在类"B"中有许多"C",在每个周期中,这些对象中的每一个都应该更新。一切都很好,但我使用visual studio的性能分析测试了它的性能,有趣的是(也许不是…)
int t = B->getTime();
成为最热门的线路,获得了总样本的38%!我在代码的其他部分使用了这个方法。事实上,在代码中还有其他地方我能想到,它调用这个方法的次数比这里多得多,但它的样本百分比甚至不接近类"C"中使用的百分比!我怀疑当程序达到"C"的更新方法时,类"A"中的变量可能没有缓存在CPU中,但一位朋友建议情况并非如此,因为L3和RAM的计算速度不会在速度上产生太大差异。你觉得呢?
据我所知,我的想法是
函数B->getTime();与任何其他函数相比,被调用的次数更多。
因为这个函数是由属于B类的C对象调用的。
对于给定的代码,这个函数被调用的次数很可能比其他任何函数都多。
例如,10个B每个具有100个C。然后B->getTime()在一个循环中被调用1000次。
瓶颈似乎是在执行方法getTime()时,这两个取消引用的影响不应该像方法执行那样大,相比之下,方法执行相当昂贵。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- 在Webots C++中将速度设置为差速轮的问题
- 流解析算法速度问题
- 使用"最大化速度"而不是"最小化大小"的堆问题
- 我的项目中指向int的速度问题
- OpenCV速度问题