只是一个免责声明:这是一个家庭作业;我来这里是因为我的(在线)教学反应不是很好。就是说,我想除了一个问题外,我已经弄清楚了。
任务是计算以不同方式创建 10000 个大小为 100000 的 3 个数组中的每一个需要多长时间:静态、堆栈和堆。我很确定我有正确的代码来创建数组。我遇到的问题是当我将 avgTime 打印到屏幕上时,每个函数输出完全相同的值。因此,如果第一个函数花费了 800 毫秒,那么接下来的两个函数将重复该时间。我认为这与 avgTime 变量的范围有关。有什么想法吗?
#include <iostream>
#include <windows.h>
using namespace std;
void fStaticArray() {
int i = 0;
DWORD avgTime;
while (i<1000){
DWORD before = GetTickCount();
static int staticArray [100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fStaticArray: " << (avgTime/1000) << "ms ";
//avgTime = 0;
}
void fStackArray() {
int i = 0;
DWORD avgTime;
while (i < 1000) {
DWORD before = GetTickCount();
int stackArray [100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fStackArray: " << (avgTime/1000) << "ms ";
}
void fHeapArray() {
int i = 0;
DWORD avgTime;
while (i < 1000) {
DWORD before = GetTickCount();
int * heapArray = new int[100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fHeapArray: " << (avgTime/1000) << "ms ";
}
int main(void) {
fStaticArray();
fStackArray();
fHeapArray();
}