2013-09-22 22 views
0

我试图运行这个测试 - 计算速度 - 这个对象类名为Point与其中的一些方法。它的构造函数Point(String, double, double)需要三个输入/变量。如何使用currentTimeMillis()在类上运行计算速度?

我有这个想法,但我似乎无法将它放在代码中:我想使用Math.random在A和C之间创建一个随机数,将该数字放在一个变量中(对于这三个输入中的每一个)它创建一个对象数组,然后循环遍历数组,每次创建新的实例。

我在下面的代码是相当乱七八糟的,但任何帮助,将不胜感激。

public class Test{ 
    long startTime = System.currentTimeMillis(); 
    long total = 0; 
    for (int i = 0; i < 10000000; i++) { 
     total += i; 
     randomValue1 = (int)(Math.random()*10); 
     randomValue2 = (int)(Math.random()*10); 
     Point[] instances = new Point[numberOfElements]; 
     for (int i=0; i<instances.length; i++) { 
      instances[i] = new Point(,randomValue1, randomValue2); 
     } 
    } 
    long stopTime = System.currentTimeMillis(); 
    long elapsedTime = stopTime - startTime; 
    System.out.println(elapsedTime); 
} 
+0

使用nanoTime的currentTimeMillis,您还需要通过运行10000次(根据我的理解)的方法来预热JIT以获得更好的结果 – MadProgrammer

+0

大部分此代码似乎没有做你怎么看。例如'total'不用于任何事情,如果是的话,它将不会有用。每个点的随机值都是相同的。点是2D的,所以不清楚你会使用三个值。大部分时间将用于创建对象并生成随机值。 –

回答

3

不仅currentTimeMillis没有足够的分辨率,而且手写微基准由于JIT的优化是棘手的,而且容易出错。您应该考虑使用微型基准框架,例如Caliper