【发布时间】:2023-03-24 02:40:01
【问题描述】:
我想在代码中测量程序运行时间(只有搜索min和max的时间),我的问题是搜索min和max是在循环中,运行时间也显示x倍就像在循环中一样,因为我可以测量循环中的时间并在屏幕上只显示一个结果?
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");
}
});
在这个程序中,PARTITIONS = 4,所以屏幕显示 4x exec time。
【问题讨论】:
标签: java multithreading time thread-safety