闲来无事,想测试一下java和C哪个快一些,写了一个求5000阶乘的程序,有兴趣者请进

888atao 2004-04-02 09:50:22
分明编写了各个平台版本
测试结果如下:
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还会这样吗?
有知情者请回贴,谢谢
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Semigod 2004-04-02
  • 打赏
  • 举报
回复
你这样的程序没有测试出真正效果,原因很简单:你的程序太过简单,VM并不是象以前的Basic那样一句一句解释执行的,而通常是将将要执行的部分提前在内存中编译后再执行。你这个程序这么简单,一编译后就相当于在内存中执行本机代码了,所以看到的各语言之间的差距很小。 而在实际的在的应用中,Java比本机代码要慢几倍到十几倍
evice 2004-04-02
  • 打赏
  • 举报
回复
先声明我不是知情者。

我感觉C要是远离了系统,就没有优势了。估计MS会保留VC的这一特性,不然为什么还出C#?

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧