我正在開發一個項目,其中需要測量程序所花費的總時間和程序所花費的平均時間。該程序是一個多線程程序。總共花費的時間和所有線程所花費的平均時間
在該程序中,每個線程都在特定範圍內工作。輸入參數是Number of Threads
和Number of Task
。
如果number of threads is 2
和number of tasks is 10
那麼每個線程將執行10 tasks
。所以這意味着2線程將做20 tasks
。
使指─
第一線應使用1 and 10
及第二線程之間的ID應該是使用11 and 20
之間的ID。
我得到了上述方案的工作。現在我想測量所有線程所花費的總時間和平均時間。所以我在我的程序中得到了下面的設置。
問題陳述: -
誰能告訴我我將嘗試所有的線程來衡量Total time and Average time taken
的方法是在我下面的程序正確與否?
//create thread pool with given size
ExecutorService service = Executors.newFixedThreadPool(noOfThreads);
long startTime = 0L;
try {
readPropertyFiles();
startTime = System.nanoTime();
// queue some tasks
for (int i = 0, nextId = startRange; i < noOfThreads; i++, nextId += noOfTasks) {
service.submit(new XMPTask(nextId, noOfTasks, tableList));
}
service.shutdown();
service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
} finally {
long estimatedTime = System.nanoTime() - startTime;
logTimingInfo(estimatedTime, noOfTasks, noOfThreads);
}
private static void logTimingInfo(long elapsedTime, int noOfTasks, int noOfThreads) {
long timeInMilliseconds = elapsedTime/1000000L;
float avg = (float) (timeInMilliseconds)/noOfTasks * noOfThreads;
LOG.info(CNAME + "::" + "Total Time taken " + timeInMilliseconds + " ms. And Total Average Time taken " + avg + " ms");
}
僅供參考,上面的程序,我將運行在一臺專門用於我們的LNP測試的機器上。 – AKIWEB 2013-03-16 21:07:09