fun2比fun1稍快点

时间:2022-10-05 11:03:20
fun2比fun1稍快点

运行环境:WinXP VS2005(VC8)

核心代码:

#include <iostream>

using namespace std ;

#include <time.h>


#define WAN (10000)

const int iNum = WAN*WAN*3;

void fun1(int* p)

{

for( int i = 0 ; i < iNum ; i++ )

{

p[i] = i;

}

}


void fun2(int* p)

{

for( int i = 0 ; i < iNum ; i+= 4 )

{

p[i] = i;

p[i+1] = i+1;

p[i+2] = i+2;

p[3+3] = i+3 ;

}

}


测试程序一:

void main()

{

int * p = new int[iNum];

int x1 = time(NULL);

fun1(p);

int x2 = time(NULL);

fun2(p);

int x3 = time(NULL);

cout << (long)(x2-x1) << "秒 " << (long)(x3-x2) << "秒";

delete [] p ;

}

五次的运行结果:

4,3

5,2

4,3

5,2

4,3


测试程序二fun2在前,fun1在后:

void main()

{

int * p = new int[iNum];

int x1 = time(NULL);

fun2(p);

int x2 = time(NULL);

fun1(p);

int x3 = time(NULL);

cout << (long)(x2-x1) << "秒 " << (long)(x3-x2) << "秒";

delete [] p ;

}

五次的运行结果:

3,4

3,5

3,4

2,5

3,4
总结3亿次循环,可以节约1秒左右。

p[3+3] = i+3 ; 弄错了,改正。 时间精确到毫秒。
#include <iostream>
using namespace std ;
#include <time.h>

#define WAN (10000)
const int iNum = WAN*WAN*3;
void fun1(int* p)
{
for( int i = 0 ; i < iNum ; i++ )
{
p[i] = i;
}
}

void fun2(int* p)
{
for( int i = 0 ; i < iNum ; i+= 4 )
{
p[i] = i;
p[i+1] = i+1;
p[i+2] = i+2;
p[i+3] = i+3 ;
}
}

void Test()
{
int * p = new int[iNum];
long x1 = clock();
fun1(p);
long x2 = clock();
fun2(p);
long x3 = clock();
cout << (x2-x1) << "豪秒 " << (x3-x2) << "豪秒" << endl;
delete [] p ;
}

void main()
{
Test();
Test();
Test();
Test();
Test();
}结果为:
4734豪秒 3547豪秒
5078豪秒 3047豪秒
4453豪秒 3047豪秒
4468豪秒 2954豪秒
4531豪秒 3063豪秒换一下Test中fun1,fun2的位置:
void Test()

{

int * p = new int[iNum];

long x1 = clock();

fun2(p);

long x2 = clock();

fun1(p);

long x3 = clock();

cout << (x2-x1) << "豪秒 " << (x3-x2) << "豪秒" << endl;

delete [] p ;

}
结果为:
3016豪秒 4313豪秒
2938豪秒 4344豪秒
2953豪秒 4515豪秒
2875豪秒 4343豪秒
2875豪秒 4329豪秒结论:也是快1.5秒。