1
計算性能比較我有一個同時執行一些繁重的操作的線程池,下面是我的代碼的Java:每秒
ExampleCompute.java
class ExampleCompute {
private List<long> allData = new ArrayList<long>();
ExecutorService executor = Executors.newFixedThreadPool(1000);
public calculate() {
for(int i=0; i<myData.size; i++) {
MyWorker worker = new MyWorker(myData.get(i));
Future<long> currentDataPoint = executor.submit(worker);
allData.add(currentDataPoint);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
}
}
什麼,我試圖做的是打印到屏幕每N秒每秒完成多少次操作。
例如
// Every 10 seconds do the following
System.out.println("Thread pool is completing 533 calculation per second");
什麼是實現這一目標的最佳方式是什麼?
有簡單的方法和複雜的方法。一個簡單的方法是在工作完成後讓工作人員設置更新。但是由於計時或工作狀態與運行任務的業務邏輯無關,因此可以使用AOP切點來截取結束事件。 AOP方法可能過度殺傷,但我認爲它的前進方向是正確的。 –
Aop會達到性能。對於時間指標,它不應該增加任務執行的所有複雜性。您是否希望時間是平均值或即時時間。如果是平均值,那麼在完成工作時您可以計算平均值。 –
即時。如果我想要平均數據,我可能會記錄數據並在稍後運行查詢。 – user316114