闲来无事,想测试一下java和C哪个快一些,写了一个求5000阶乘的程序,有兴趣者请进
分明编写了各个平台版本
测试结果如下:
C: 1969ms
J#: 2766ms
Java: 2062ms
C#: 2140ms
在C中测试结果很稳定
但在java中,很不稳定,最快速度为2062ms
我的机器CPU为 PIV 1.7
C的源程序如下
#include <stdio.h>
#include <windows.h>
void main()
{
int Data[99999];
int digit = 1;
int N = -1;
printf("Input a Factorial Number: ");
scanf("%d", &N);
printf("Calculating %d's Factorial: ", N);
memset(Data, 0, 99999);
Data[1] = 1;
int n = GetTickCount();
int temp, temp1;
for (int i=1; i<=N; i++)
{
temp = i*100/N;
if (temp != temp1)
{
if (temp<10 && temp>0)
printf("\b\b%d%%", temp);
else
printf("\b\b\b%d%%", temp);
temp1 = temp;
}
for (int j=1; j<=digit; j++)
Data[j] *= i;
for (int k=1; k<=digit; k++)
{
if (Data[k]>10)
{
if (Data[digit]>10)
digit++;
Data[k+1] += Data[k]/(int)10;
Data[k] = Data[k]%(int)10;
}
}
}
n=GetTickCount() - n;
printf("\n\nThe Result is: \n");
for (i=digit; i>0; i--)
printf("%d", Data[i]);
printf("\n\nTotalDigit:%d Time:%dms\n", digit, n);
}
看来虚拟机怎么也比不上C
不过听说.net只是一个过渡产品
不知道过渡以后windows操作系统是不是全部换成.net的了?
现在VC7是直接访问操作系统的,与.net虚拟机无关(除了用它的组件)
不知道以后VC7还会这样吗?
有知情者请回贴,谢谢