2013-09-22 21 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