0

我有一个简单的问题

我正在循环一段代码,这段代码的目的是收集所花费的时间。我可以在每次循环运行时执行此操作,但我想要做的是,例如,每次循环运行时收集持续时间,存储这些值,将它们加在一起,然后平均这些怎么能我实现了这个?

此外,当循环完成其时间时,它会继续前进并且需要重置总持续时间

这是我当前的代码:

    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++;
        }

多谢你们 :)

4

2 回答 2

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
于 2013-04-16T15:41:34.517 回答
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
于 2013-04-16T15:36:20.270 回答