前もっての免責事項:これは宿題です。私の(オンラインの)教えはひどく反応しないので、私はここに来ます。そうは言っても、1つの問題を除いてすべてを理解していると思います。
割り当ては、静的、スタック、およびヒープのさまざまな方法で、100000サイズの3つのアレイをそれぞれ1000個作成するのにかかる時間を計測することです。配列を作成するための正しいコードがあると確信しています。私が遭遇している問題は、avgTimeを画面に出力するときに、各関数がまったく同じ値を出力することです。したがって、最初の関数に800ミリ秒かかった場合、その時間は次の2つの関数に対して繰り返されます。それは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();
}