关于Java与C++计算能力的比较

以相同的算法求解1-2000000之间素数的个数,为什么Java的计算速度要快于C++?
(Java SE 8 )40 milliseconds左右与C++(TDM-GCC 4.9.2 Release)180milliseconds左右
附代码

C++

 #include <iostream> 
#include <bitset>
#include <ctime>

using namespace std;

int main()
{
    const int N = 2000000;
    clock_t cstart = clock();

    bitset<N + 1> b;
    int count = 0;
    int i;
    for(i = 2; i <= N; i++)
      b.set(i);

    i = 2;
    while(i * i <= N)
    {
        if(b.test(i))
        {
            count++;
            int k = 2 * i;
            while(k <= N)
            {
                b.reset(k);
                k += i;
            }
        }
        i++;
    }

    while(i <= N)
    {
        if(b.test(i))
          count++;
        i++;
    }

    clock_t cend = clock();
    double millis = 1000.0 * (cend - cstart) / CLOCKS_PER_SEC;
    cout << count << "primes\n"
         << millis << "milliseconds\n";
    return 0;   
}

Java

import java.util.*;

public class Sieve 
{
    public static void main(String[] args)
    {
        int n = 2000000;
        long start = System.currentTimeMillis();
        BitSet b = new BitSet(n + 1);
        int count = 0;
        int i;
        for(i = 2; i <= n; i++)
            b.set(i);

        i = 2;
        while(i * i <= n)
        {
            if(b.get(i))
            {
                count++;
                int k = 2 * i;
                while(k <= n)//将所有i的倍数位置为关闭状态
                {
                    b.clear(k);
                    k += i;
                }
            }
            i++;
        }

        while(i <= n)
        {
            if(b.get(i)) count++;
            i++;
        }

        long end = System.currentTimeMillis();
        System.out.println(count + " primes");
        System.out.println((end - start) + " milliseconds");
    }
}

从结果看,肯定是同等硬件条件下,JDK8对代码的优化比TDM-GCC 4.9.2要好了,使用了更优的CPU指令。

还真是,我怎么觉得不会呢?mark一个。按理说C++要快点啊

楼主用的什么算法?可以写 成c语言的再试试,应该会快一点的。在windows下还是linux下?

现在来看,还是java se8更快图片说明

http://blog.csdn.net/nomasp/article/details/45484979 看看这个吧 你会惊呆的