小编Spe*_*ood的帖子

Java似乎比C++更快地执行简单算法.为什么?

介绍:

使用两个相同的mergesort算法,我测试了C++(使用Visual Studios C++ 2010 express)和Java(使用NetBeans 7.0)的执行速度.我推测C++执行至少会稍微快一点,但测试显示C++执行速度比Java执行慢4到10倍.我相信我已经为C++设置了所有速度优化,而且我发布的是发布而不是调试.为什么会出现这种速度差异?

码:

Java的:

public class PerformanceTest1
{
 /**
  * Sorts the array using a merge sort algorithm
  * @param array The array to be sorted
  * @return The sorted array
  */
 public static void sort(double[] array)
 {
      if(array.length > 1)
      {
           int centre;
           double[] left;
           double[] right;
           int arrayPointer = 0;
           int leftPointer = 0;
           int rightPointer = 0;

           centre = (int)Math.floor((array.length) / 2.0);

           left = new double[centre];
           right = new double[array.length - centre]; …
Run Code Online (Sandbox Code Playgroud)

c++ java netbeans visual-c++

6
推荐指数
3
解决办法
2541
查看次数

为什么Java似乎比C++执行速度更快 - 第2部分

介绍

这是我之前提到的问题的后续问题:Java似乎比C++更快地执行简单算法.为什么?.通过这篇文章,我学到了一些重要的东西:

  1. 我没有使用Ctrl + F5在Visual Studios C++ Express上编译和运行c ++代码,这导致了debuging减慢了代码执行速度.
  2. 向量与处理数据数组的指针一样好(如果不是更好).
  3. 我的C++很糟糕.^ _ ^
  4. 更好的执行时间测试是迭代,而不是递归.

我试着写一个更简单的程序,它不使用指针(或Java等价的数组),并且在执行时非常简单.即便如此,Java执行速度也比C++执行速度快.我究竟做错了什么?

码:

Java的:

 public class PerformanceTest2
 {
      public static void main(String args[])
      {
           //Number of iterations
           double iterations = 1E8;
           double temp;

           //Create the variables for timing
           double start;
           double end;
           double duration; //end - start

           //Run performance test
           System.out.println("Start");
           start = System.nanoTime();
           for(double i = 0;i < iterations;i += 1)
           {
                //Overhead and display
                temp = Math.log10(i);
                if(Math.round(temp) == temp)
                {
                     System.out.println(temp);
                } …
Run Code Online (Sandbox Code Playgroud)

c++ java visual-studio-2010 netbeans7.0

4
推荐指数
2
解决办法
1580
查看次数