我们正在编写一些将数据写入数组的方法(myFunc)。该数组必须是类的一个字段(MyClass)。 实施例:C++:填充数组的时间太长
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;
}
我们PROGRAMM工作更快 - 它需要近2-3秒(如果它是接近10000次卡列斯)。
在此先感谢!
您使用的编译器是什么,目标平台是什么? – 2013-04-21 08:20:58
目标平台是Windows x64,编译器是x86_64-v64-mingw32 4.7.0 – Damir 2013-04-21 08:21:52
这没有任何意义。你看过汇编程序的功能吗?我看不出有什么区别,只有一个测试在堆上,另一个在堆栈上。 – SinisterMJ 2013-04-21 08:23:13