代码如下:
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
double arr[6000][100][10];
int main()
{
clock_t a, b;
double all;
for (int j = 0; j < 6000; j++)
{
for (int k = 0; k < 100; k++)
{
for (int t = 0; t < 10; t++)
{
arr[j][k][t] = 0;
}
}
}
a = clock();
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 6000; j++)
{
for (int k = 0; k < 100; k++)
{
for (int t = 0; t < 10; t++)
{
arr[j][k][t] = arr[j][k][t] * 0.1 + j * 0.2 + k * 0.3 + t * 0.4;
}
}
}
}
b = clock();
all = (double)(b - a) / CLOCKS_PER_SEC;
cout << all << endl;
double ***f;
f = new double**[6000];
for (int j = 0; j < 6000; j++)
{
f[j] = new double*[100];
for (int k = 0; k < 100; k++)
{
f[j][k] = new double[10];
for (int t = 0; t < 10; t++)
{
f[j][k][t] = 0;
}
}
}
a = clock();
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 6000; j++)
{
for (int k = 0; k < 100; k++)
{
for (int t = 0; t < 10; t++)
{
f[j][k][t] = f[j][k][t] * 0.1 + j * 0.2 + k * 0.3 + t * 0.4;
}
}
}
}
b = clock();
all = (double)(b - a) / CLOCKS_PER_SEC;
cout << all << endl;
double ***f_3 = (double***)malloc(6000 * sizeof(double***));
double **f_2 = (double**)malloc(6000 * 100 * sizeof(double**));
double *f_1 = (double*)malloc(6000 * 100 * 10 * sizeof(double*));
for (int i = 0; i < 6000; i++)
{
f_3[i] = f_2 + i * 100;
for (int j = 0; j < 100; j++)
{
f_3[i][j] = f_1 + 10 * j + 100 * 10 * i;
for (int k = 0; k < 10; k++)
{
f_3[i][j][k] = 0;
}
}
}
a = clock();
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 6000; j++)
{
for (int k = 0; k < 100; k++)
{
for (int t = 0; t < 10; t++)
{
f_3[j][k][t] = f_3[j][k][t] * 0.1 + j * 0.2 + k * 0.3 + t * 0.4;
}
}
}
}
b = clock();
all = (double)(b - a) / CLOCKS_PER_SEC;
cout << all << endl;
return 0;
}
运行时间:
静态=38.687
C++动态=46.649
C动态=39.194