C++的速度比Java快2.1%:来自计算100万以内质数的实验数据对比

本文通过计算100万以内的质数并记录时间,比较了C++和Java的性能。结果显示,在不显示中间过程时,C++比Java快约2.1%;但在显示中间过程时,Java的输出速度远超C++。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了验证C++到底比Java快多少分别用两种语言计算100万以内的质数,并记录时间

C++的程序是

clock_t start,ends;

start=clock();


 int i, j;

    for(i=2;i<1000000; i++) {

        for(j=2;j <= (i/j); j++) {

            if(!(i%j)){

                break;

            }

        }

        if(j> (i/j)) {

         //  cout << i << " 是质数\n";

        } 

    }


ends=clock();

cout<<(ends-start)*1000/CLOCKS_PER_SEC<<endl;

 

Java的程序是

   long sysDate1 =System.currentTimeMillis();

      int i, j;

       for(i=2;i<1000000;i++) {

          for(j=2;j<= (i/j);j++) {

              if((i%j==0))

              {

                   break;  

              }

          }

          if(j >(i/j)) {

            //  System.out.println(i+"是质数\\n");

          }

       }

      

       long sysDate2 =System.currentTimeMillis();

     System.out.println(sysDate2-sysDate1 );

这两个程序的结构基本是相同的不存在程序设计本身快慢的问题,每个程序运行60次,得到4组数据



c++(不显示中间过程ms)显示过程msjava(不显示中间过程ms)显示过程ms
967582288441624
738573155491716
736566919291833
784571168621884
768566798661801
888814989221801
713790038601792
881795748331891
962797378511806
875787609161894
729781897861807
846828917351777
860791487851745
870765698781737
788791287541770
779728478281895
731740398521766
656720049191863
835767238581979
839775708571882
840709299241747
833732779521861
900739766591765
747737947831830
795734728131764
849705847691784
832723198341740
809714758921810
834728238181808
766718478341684
平均
81572606.83333832.06666671801.866667
标准差
70.693705527616.06419882.1680932971.20521204
**0.02094069540.29534187


可以看到在不显示中间过程

//   cout << i << " 是质数\n";

//  System.out.println(i+"是质数\\n");

的情况下C++30次平均用时815ms,Java用时832ms,C++比Java快2.1%。

但是如果将中间运算过程打印到控制台并显示

 cout << i << " 是质数\n";

System.out.println(i+"是质数\\n");

C++平均用时72606ms,Java用时1801ms,Java的控制台显示速度是C++的40倍。

所以运算量很大希望看看中间的运算过程看看是没算完还是死机了,显示样本的比例就非常重要,2%的速度优势很容易就被40倍的控制台显示速度给消耗掉了。

比如这道题很容易用方程算出

815+71791*x/78498=832+969*x/78498

X=18,也就是说每4361(78498/18)个显示1个的比例C++才可能比Java快

只要x>18个Java的速度就比C++快。

很容易得到方程Java/C++的速度比,x是显示的样本数量

 

(63975870+71791*x)/(65310336+969*x)=y




当样本数量x<=18时C++>Java





当样本数量x>=18时C++<Java

所以对这道题当不显示中间过程的情况下C++比Java快2.1%,如果需要显示过程当抽样总数量超过18个的时候Java比C++快,如果需要显示所有的中间过程Java比C++快40倍.








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑榆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值