【发布时间】:2014-01-04 18:13:28
【问题描述】:
我正在编写一个循环通过向量的模拟。在代码中,它执行一个操作,每次迭代计算 2 个对象的 delta x 和 y。我正在处理的代码:
for(unsigned z = 0; z < creatures.size(); z++) {
for(unsigned z2 = 0; z2 < creatures.size(); z2++) {
if(z != z2) {
int delta_x = creatures[z2].xpos - creatures[z].xpos;
int delta_y = creatures[z2].ypos - creatures[z].ypos;
}
}
}
这是类:
class Creature {
public:
int xpos;
int ypos;
...
};
还有其他代码,但不会对性能产生太大影响。我注意到,如果我将增量的分配更改为数字甚至减法运算(例如 z-z2 或类似的东西),它会将程序的“FPS”从 ~5 提高到 ~7/8。有什么办法可以加快这个操作?
【问题讨论】:
-
您确定这是对性能有影响的代码吗?对我来说,这似乎并不昂贵。
-
creatures定义在哪里? -
@EdHeal Vector:
vector<Creature> creatures;类本身在头文件中定义。 -
使用分析器来识别程序的瓶颈。
-
您是在为使用编译器优化选项构建的代码计时,还是在为调试构建计时?由于迭代器和/或访问器的大量验证,调试构建中的 STL 容器访问通常会非常缓慢。
标签: c++ class loops optimization vector