#include<iostream>
#include <intrin.h>
using namespace std;
unsigned __int64 TimeValue=0;
unsigned __int64 rdtsc(void)
{
return __rdtsc();
};
void time_start() { TimeValue=rdtsc(); }
long long time_stop() {
return (rdtsc()-TimeValue);
}
int main()
{
long x[262144],i,k,r;
int j;
x[0] = 0;
for (i=1; i<262144; i++)
{
long r = rand()%i;
x[i] = x[r];
x[r] = i;
}
time_start();
for (j=0; j<1000; j++)
for (k=0, i=0; i<262144; i++)
k = x[k];
cout<<time_stop()/1000/262144;
}
プログラムでは、1メガバイトの配列サイズを作成する必要があります。 long x [262144]
行のプログラムをデバッグすると、エラーが発生します。 "dgdxgdrfy.exe"の未処理の例外 "0x00ff1997":0xC00000FD:スタックオーバーフロー。なぜこれが問題なのですか?サイズの配列1 MB
配列をグローバルとして宣言してみてください。 –