Java 程序运行时间(在循环中,仅显示一次)
我想在代码中测量程序运行时(仅搜索最小值和最大值的时间),我的问题是搜索最小值和最大值在循环中,运行时显示的数量也是循环中的x倍,因为我可以测量循环中的时间并在屏幕上只显示一个结果Java 程序运行时间(在循环中,仅显示一次),java,multithreading,time,thread-safety,Java,Multithreading,Time,Thread Safety,我想在代码中测量程序运行时(仅搜索最小值和最大值的时间),我的问题是搜索最小值和最大值在循环中,运行时显示的数量也是循环中的x倍,因为我可以测量循环中的时间并在屏幕上只显示一个结果 long realTime = System.currentTimeMillis(); for (int i = 0; i < PARTITIONS; i++) { final int partition = i; threads[i] = ne
long realTime = System.currentTimeMillis();
for (int i = 0; i < PARTITIONS; i++) {
final int partition = i;
threads[i] = new Thread(new Runnable() {
@Override
public void run() {
// find min,max
int from = arrayToSearch.length * partition / PARTITIONS;
int to = arrayToSearch.length * (partition + 1) / PARTITIONS;
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
for (int j = from; j < to; j++) {
min = Math.min(min, arrayToSearch[j]);
max = Math.max(max, arrayToSearch[j]);
}
partitionMin[partition] = min;
partitionMax[partition] = max;
long execcutionTime = System.currentTimeMillis() - realTime;
System.out.println("exec time: " + execcutionTime + "ms");
}
});
long realTime=System.currentTimeMillis();
对于(int i=0;i
在这个程序中,PARTITIONS=4,因此屏幕显示4x执行时间。只需将这两行代码放在循环之外:
long executiontime=System.currentTimeMillis()-realTime;System.out.println(“exec time:+executiontime+“ms”);
如果您不关心显示哪个结果,那么最简单的方法就是仅当分区
为0时才打印执行时间,如下所示:
if (partition == 0) {
System.out.println("exec time: " + execcutionTime + "ms");
}
这并不能解决问题