我有一个简单的问题
我正在循环一段代码,这段代码的目的是收集所花费的时间。我可以在每次循环运行时执行此操作,但我想要做的是,例如,每次循环运行时收集持续时间,存储这些值,将它们加在一起然后平均这些值如何可以我实现了这个目标吗?
当循环完成其时间时,它继续运行并且需要重置总持续时间
这是我目前的代码:
if (myrank == 0) {
for (int len = minlen; len <= maxlen; len *= 2) { //len=*2 doubles the ping size each time
for (int i = 0; i < MAX_LOOPS;) {
long startTime = System.nanoTime();
long endTime = System.nanoTime();
long duration = endTime - startTime;
durationseconds = duration; // this is where i want to store all the durations
i++;
}
谢谢你们:)
答案 0 :(得分:3)
您可以拥有以下内容:
if (myrank == 0) {
for (int len = minlen; len <= maxlen; len *= 2) {
long durationseconds =0;
for (int i = 0; i < MAX_LOOPS;) {
----
durationseconds = durationseconds + duration;
---
}
float avgSecPerLoop = durationsseconds / MAX_LOOPS
答案 1 :(得分:2)
试试这个:
ArrayList<Long> durations = new ArrayList<Long>();
//start loop
durations.add(duration);
// end loop
每次迭代都有时间后,您可以计算平均值或总数或任何您想要的值
或者更好(更快)如果你从一开始就知道你将做多少次迭代,你可以使用原始数组来存储时间
long[] durations = new long[NB_ITERATIONS];
int counter=0;
//start loop
durations[counter++] = duration;
//end loop