再测JAVA性能比C/C++好问题

再测JAVA性能比C/C++好问题

标签: JAVAc++性能
1876人阅读 评论(4) 收藏 举报

   今天我看了《叫嚣Java性能比C/C++好的人进来看看,用VC5.0编译没加优化选项的程序都比GCJ优化后生成的Java NATIVE CODE快!更别说用INTEL C/C++ 8.0了》

 一贴,感觉测试算法比较有意义,上测试源代码


  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #include <time.h>  
  4.   
  5.   
  6. bool isPrime(long i)  
  7. {  
  8.     for(long test = 2; test < i; test++)  
  9.     {  
  10.         if(i%test == 0)  
  11.         {  
  12.             return false;  
  13.         }  
  14.     }  
  15.     return true;  
  16. }  
  17.   
  18.   
  19. void main(void)  
  20. {  
  21.     clock_t start_time = clock();  
  22.   
  23.     long n_loops =  50000;  
  24.     long n_primes = 0;  
  25.   
  26.     for(long i = 0; i < n_loops; i++)  
  27.     {  
  28.         if(isPrime(i))  
  29.         {  
  30.             n_primes++;  
  31.         }  
  32.     }  
  33.   
  34.     clock_t end_time = clock();  
  35.     printf("%d primes found\n", n_primes);  
  36.     printf("Time taken = %d\n", end_time - start_time);  
  37.     getchar();  
  38. }  


  1. package prime;  
  2.   
  3. import java.io.*;  
  4.   
  5. class prime  
  6.   
  7. {  
  8.   
  9.    private static boolean isPrime(long i)  
  10.   
  11.    {  
  12.   
  13.        for(long test = 2; test < i; test++)  
  14.   
  15.        {  
  16.   
  17.        if(i%test == 0)  
  18.   
  19.        {  
  20.   
  21.         return false;  
  22.   
  23.        }  
  24.   
  25.        }         
  26.   
  27.        return true;  
  28.   
  29.    }  
  30.   
  31.   
  32.   
  33.    public static void main(String[] args) throws IOException  
  34.   
  35.    {  
  36.   
  37.        long start_time = System.currentTimeMillis();  
  38.   
  39.   
  40.   
  41.        long n_loops =  50000;  
  42.   
  43.        long n_primes = 0;  
  44.   
  45.   
  46.   
  47.        for(long i = 0; i < n_loops; i++)  
  48.   
  49.        {  
  50.   
  51.        if(isPrime(i))  
  52.   
  53.            {  
  54.   
  55.            n_primes++;  
  56.   
  57.            }  
  58.   
  59.        }  
  60.   
  61.      
  62.   
  63.        long end_time = System.currentTimeMillis();  
  64.   
  65.   
  66.   
  67.        System.out.println(n_primes + " primes found");  
  68.   
  69.        System.out.println("Time taken = " + (end_time - start_time));  
  70.   
  71.    }  
  72.   
  73. }  


结果:

  1. VC 2012 编译运行结果:  
  2. x86  
  3. primerelease  
  4. 5135 primes found  
  5. Time taken = 343  
  6.   
  7.   
  8. 5135 primes found  
  9. Time taken = 343  
  10.   
  11.   
  12.   
  13. x64  
  14. primereleasex64  
  15. 5135 primes found  
  16. Time taken = 347  
  17.   
  18.   
  19. 5135 primes found  
  20. Time taken = 348  
  21.   
  22.   
  23. 5135 primes found  
  24. Time taken = 348  
  25.   
  26.   
  27. JAVA 运行结果  
  28.   
  29. C:\Users\luozhuang>java -jar G:\test.jar  
  30. 5135 primes found  
  31. Time taken = 1253  
  32.   
  33.   
  34. C:\Users\luozhuang>java -jar G:\test.jar  
  35. 5135 primes found  
  36. Time taken = 1229  
  37.   
  38.   
  39. C:\Users\luozhuang>java -jar G:\test.jar  
  40. 5135 primes found  
  41. Time taken = 1257  
  42.   
  43.   
  44. C:\Users\luozhuang>java -jar G:\test.jar  
  45. 5135 primes found  
  46. Time taken = 1249  

机器平台:


C:\Users\luozhuang>java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)


C++编译器

vc++ 2012 分x86 和x64两个平台


系统 windows 8 x64

i7 3630qm + 8G 内存


 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值