如何在循环中向变量添加值

时间:2013-04-16 15:29:02

标签: java

我有一个简单的问题

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

当循环完成其时间时,它继续运行并且需要重置总持续时间

这是我目前的代码:

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

谢谢你们:)

2 个答案:

答案 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