我用java执行下列代码:
public static void consumeTimeLoop(){
        int n1,n2,i1,i2;
        int a=0,b,c;
        String s1,s2;
        n1 = 100000000;
        n2 = 10;
        SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss.SSS");
        s1 = sdf.format(new Date());
        System.out.println("begin loop:" + s1);
        for(i1=0; i1<n1; i1++){
            for(i2=0; i2<n2; i2++){
                b = 10;
                c = 20;
                a = b*c ;
            }
        }
        s2 = sdf.format(new Date());
        System.out.println("end loop:"+ s2 );
        System.out.println(""+a);
    }
用了约7秒
但是用vc执行同样逻辑代码:
void tSimplePerformance()
{
SYSTEMTIME stm;
CString str ;
GetLocalTime(&stm);
str.Format("%02d:%02d:%02d.%03d", stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds);
//TRACE("%s\n",str);
cout<<(LPCTSTR)str<<endl ;
int i1,i2 ,n1,n2 ;
int a,b,c;
n1 = 100000000;
n2 = 10;
for( i1=0; i1<n1; i1++ )
{
for( i2=0; i2<n2; i2++ )
{
b=10;
c=20;
a = b*c;
}
}
GetLocalTime(&stm);
str.Format("%02d:%02d:%02d.%03d", stm.wHour, stm.wMinute, stm.wSecond, stm.wMilliseconds);
//TRACE("%s\n",str);
cout<<(LPCTSTR)str<<endl ;
}
也是约7秒我的CPU是P4 1.7G的

解决方案 »

  1.   

    这个嘛。。很不好说,只能说现在java的速度已经可以和C++比了
      

  2.   

    这么一点点就能比较出来? 太短了java两次编译 第一次会很慢,第二次就差不多接近C++了  应该还是比C++要差一些
     C++一次编译关键是你的代码设计的好坏, 结构不好用C++ 不一定快过java
      

  3.   

    我见过别人拿C++写视频音频的编码器,解码器。可没听说过有人拿java写
      

  4.   

    Java的速度
    和C++比
    不说了
      

  5.   

    你要希望java能和c++一样快,你得祈祷上帝了。
      

  6.   

    由于Java编译器和虚拟机的不同对Java代码的性能影响比语言本身的影响大的多,所以统一讨论Java的程序的性能经常是有误导性的。Java语言的一些特性不可避免的有额外的性能代价,例如数组范围检查、运行时类型检查等等。Java程序的性能还会因为不同的动态复杂性和垃圾处理机制使用的多少而各有不同。如果JVM的实现比较优化的话,那么这些功能甚至可以增加内存分配的性能。这和总是使用STL或者托管C++的程序的情况类似。尽管如此,Java仍然以低性能著称。这部分归因于Sun公司最初的JVM实现使用未优化的解释机制来执行字节码。一些新版本的JVM使用Just-In-Time(JIT)编译器,在加载字节码的时候将其编译成针对运行环境的本地代码来实现一些本地编译器的优化特性。Just-In-Time机制和本地编译的性能比较仍旧是一个有争议的话题。JIT编译需要很多时间,对于运行时间不长或者代码很多的大型程序并不适宜。但是不算JIT编译阶段的话,程序的运行性能在很多JVM下可以和本地编译的程序一争短长,甚至在一些计算比较密集的数值计算领域也是这样。另外,在使用-server选项运行java程序时,也可以对java进行更深入的优化,比如在运行时将调用较多的方法内联(inline)到程序中来提高运行速度,这就是所谓的“动态优化”,而本地编译器是无法做到这一点的;这也是一些java代码比对应本地代码运行的更快的原因之一。微软的.NET平台也使用JIT编译器。Java的设计目的主要是安全性和可移植性,所以对于一些特性,比如对硬件架构和内存地址访问的直接访问都被去除了。如果需要间接调用这些底层功能的话,就需要使用JNI(Java原始接口)来调用本地代码,而间接访问意味着频繁调用这些特性时性能损失会很大,微软的.NET平台也有这样的问题。所以到目前为止,性能敏感的代码,例如驱动程序和3D视频游戏,还是大多使用本地编译,甚至直接以不直接支持面向对象的C语言或机器码编写。Java 维基百科,自由的百科全书
    http://zh.wikipedia.org/wiki/Java#.E6.80.A7.E8.83.BD.E9.97.AE.E9.A2.98
      

  7.   

    也想知道java5.0会怎么样?
    是不是有了一个提升?
      

  8.   

    始终认为java的速度和c++是不可比的。java的内存的分配和回收,边界的检查等方面都影响速度。
      

  9.   

    慢是一定的了,但用通过JIT之后,差不了太多.
    P.S.Java的优势又不是速度,比C++好的方面海了去
      

  10.   

    各有所长了。
    虽然速度差一点点,还是喜欢java