【发布时间】:2013-04-21 08:17:28
【问题描述】:
我们正在编写一个将一些数据写入数组的方法 (myFunc)。数组必须是类 (MyClass) 的字段。 示例:
class MyClass {
public:
MyClass(int dimension);
~MyClass();
void myFunc();
protected:
float* _nodes;
};
MyClass::MyClass(int dimension){
_nodes = new float[dimension];
}
void MyClass::myFunc(){
for (int i = 0; i < _dimension; ++i)
_nodes[i] = (i % 2 == 0) ? 0 : 1;
}
方法 myFunc 被调用近 10000 次,大约需要 9-10 秒(使用其他方法)。
但如果我们将 myFunc 定义为:
void MyClass::myFunc(){
float* test = new float[_dimension];
for (int i = 0; i < _dimension; ++i)
test[i] = (i % 2 == 0) ? 0 : 1;
}
我们的程序运行得更快 - 大约需要 2-3 秒(如果它的调用次数接近 10000 次)。
提前致谢!
【问题讨论】:
-
我们正在调试模式下编译
-
如果这是
Debug构建,则在访问成员变量时所有赌注都关闭。 -
叹息...为什么在 95% 的“为什么我的代码很慢”的问题中,人们在编译时没有进行优化?有什么意义?
-
基本上,试图了解在调试模式下编译的代码的性能是没有意义的,试图“修复”这类“问题”会适得其反。
-
这是什么意思:“大约需要 9-10 秒(使用其他方法)”。还有什么方法?您希望我们如何分析我们未见过的方法?发布您在发布模式下测试并看到问题的最小完整示例,您可能在此处有一个实际问题。
标签: c++ arrays class pointers methods