我刚刚开始实现我自己的向量类,我正在用一个简单的文件对其进行测试,以检查完成所需的时间。一项测试用时 2:30 分钟,而其他测试用时 90 和 29 秒。
有什么东西影响了这门课的表现。你能帮我追查源头吗?
考试:
#include "MyVector.h"
const unsigned int SIZE_V= 1000000;
const unsigned int RUNS= 10000;
int main() {
MyVector v(SIZE_V);
for (unsigned int j=0; j<RUNS; ++j) {
for (unsigned int i=0; i<SIZE_V; ++i) {
v[i]= i;
}
}
return 0;
}
班上:
MyVector.h:
#ifndef MY_VECTOR_H
#define MY_VECTOR_H
class MyVector {
public:
MyVector(unsigned int size);
~MyVector();
int& operator[](unsigned int i);
private:
int* _data;
unsigned int _size;
MyVector(const MyVector&);
MyVector& operator=(const MyVector&);
};
#endif
MyVector.cpp:
#include "MyVector.h"
#include <assert.h>
MyVector::MyVector(unsigned int size) : _data(new int[size]) {
}
MyVector::~MyVector() {
delete[] _data;
}
int& MyVector::operator[](unsigned int i) {
assert(i<_size);
return _data[i];
}
编辑:
这些是测试结果:
granularity: each sample hit covers 4 byte(s) for 0.04% of 27.09 seconds
index % time self children called name
<spontaneous>
[1] 100.0 12.51 14.58 main [1]
11.28 0.00 1410065408/1410065408 MyVector::operator[](unsigned int) [2]
3.31 0.00 1/1 MyVector::~MyVector() [3]
0.00 0.00 1/1 MyVector::MyVector(unsigned int) [7]
-----------------------------------------------
11.28 0.00 1410065408/1410065408 main [1]
[2] 41.6 11.28 0.00 1410065408 MyVector::operator[](unsigned int) [2]
-----------------------------------------------
3.31 0.00 1/1 main [1]
[3] 12.2 3.31 0.00 1 MyVector::~MyVector() [3]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[7] 0.0 0.00 0.00 1 MyVector::MyVector(unsigned int) [7]
-----------------------------------------------