没脾气2x:
data[1000], 每个函数100000次, AMD 3000+ 1.80G
[阅读: 371] 2007-05-17 04:50:47
[code=c#]
using System;
using System.Collections.Generic;
using System.Text;
namespace TestSum
{
class Program
{
double sum1( double[] data, int N )
{
int i;
double sum = 1;
for ( i = 0; i < N; i++ )
{
sum *= data[i];
}
return sum;
}
double sum2( double[] data, int N )
{
int i;
double sum = 1;
int NN = N - 2;
for ( i = 0; i < NN; i += 2 )
{
sum *= data[i];
sum *= data[i + 1];
}
for ( ; i < N; i++ )
sum *= data[i];
return sum;
}
double sum3( double[] data, int N )
{
int i;
double sum = 1;
int NN = N - 3;
for ( i = 0; i < NN; i += 3 )
{
sum *= data[i];
sum *= data[i + 1];
sum *= data[i + 2];
}
for ( ; i < N; i++ )
sum *= data[i];
return sum;
}
double sum2x2( double[] data, int N )
{
int i;
double sum1 = 1, sum2 = 1;
int NN = N - 2;
for ( i = 0; i < NN; i += 2 )
{
sum1 *= data[i];
sum2 *= data[i + 1];
}
for ( ; i < N; i++ )
sum1 *= data[i];
return sum1 * sum2;
}
double sum3x3( double[] data, int N )
{
int i;
double sum1 = 1, sum2 = 1, sum3 = 1;
int NN = N - 3;
for ( i = 0; i < NN; i += 3 )
{
sum1 *= data[i];
sum2 *= data[i + 1];
sum3 *= data[i + 2];
}
for ( ; i < N; i++ )
sum1 *= data[i];
return sum1 * sum2 * sum3;
}
void Run( string[] args )
{
int N = 1000;
double[] data = new double[N];
Random rand = new Random();
for ( int i = 0; i < N; i++ )
{
data[i] = rand.NextDouble();
}
int times = 100000;
DateTime timeStart;
DateTime timeEnd;
timeStart = DateTime.Now;
for ( int i = 0; i < times; i++ )
{
sum1( data, N );
}
timeEnd = DateTime.Now;
Console.WriteLine( "Sum1 : {0}", timeEnd - timeStart );
timeStart = DateTime.Now;
for ( int i = 0; i < times; i++ )
{
sum2( data, N );
}
timeEnd = DateTime.Now;
Console.WriteLine( "Sum2 : {0}", timeEnd - timeStart );
timeStart = DateTime.Now;
for ( int i = 0; i < times; i++ )
{
sum3( data, N );
}
timeEnd = DateTime.Now;
Console.WriteLine( "Sum3 : {0}", timeEnd - timeStart );
timeStart = DateTime.Now;
for ( int i = 0; i < times; i++ )
{
sum2x2( data, N );
}
timeEnd = DateTime.Now;
Console.WriteLine( "Sum2x2: {0}", timeEnd - timeStart );
timeStart = DateTime.Now;
for ( int i = 0; i < times; i++ )
{
sum3x3( data, N );
}
timeEnd = DateTime.Now;
Console.WriteLine( "Sum3x3: {0}", timeEnd - timeStart );
}
static void Main( string[] args )
{
Program program = new Program();
program.Run( args );
}
}
}
[/code]
Notemper2x 3.1 ( ̄ε( ̄#)
没脾气2x 之 个人综合篇:
http://notemper2x.cndev.org/
我的 panoramio 相册:
http://panoramio.com/user/zhaixudong
我的 flickr相册:
http://www.flickr.com/photos/notemper2x/


QQ号20250出售,售价400,000元整(5位、皇冠80级、VIP7)a