Changeset 1172 for cpp/frams/model


Ignore:
Timestamp:
04/22/22 17:42:13 (2 years ago)
Author:
Maciej Komosinski
Message:

Introduced EMD_LIMIT_WARNING_MESSAGES to limit the number of warning messages printed to stderr

Location:
cpp/frams/model/similarity/EMD
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/model/similarity/EMD/emd.c

    r1130 r1172  
    147147        }
    148148
    149       if (itr == MAX_ITERATIONS)
    150         fprintf(stderr, "emd: Maximum number of iterations has been reached (%d)\n",
    151                 MAX_ITERATIONS);
    152     }
     149          if (itr == MAX_ITERATIONS) //print a warning message
     150          {
     151#define EMD_LIMIT_WARNING_MESSAGES 10 //if thousands of such messages are printed, we group them to avoid spamming stderr. Undefine (comment out) to disable.
     152#ifdef EMD_LIMIT_WARNING_MESSAGES
     153                  static int warncounter = 0;
     154                  static int warnnextlimit = 1;
     155                  warncounter++;
     156                  if (warncounter == warnnextlimit)
     157                  {
     158                          fprintf(stderr, "[repeated %dx in total, next warning at %dx] ", warncounter, warnnextlimit * EMD_LIMIT_WARNING_MESSAGES);
     159#endif
     160                          fprintf(stderr, "emd: Maximum number of iterations (%d) has been reached\n", MAX_ITERATIONS);
     161#ifdef EMD_LIMIT_WARNING_MESSAGES
     162                          warnnextlimit *= EMD_LIMIT_WARNING_MESSAGES;
     163                  }
     164#endif
     165          }
     166  }
    153167
    154168  /* COMPUTE THE TOTAL FLOW */
  • cpp/frams/model/similarity/EMD/emd.h

    r1064 r1172  
    1919// r1050: Renamed variables that caused problems with g++ 7.3.0
    2020// r1062: Global static arrays moved to a function and now allocated dynamically; removed #defined limit of MAX_SIG_SIZE=1000
     21// r1172: Introduced EMD_LIMIT_WARNING_MESSAGES to limit the number of warning messages printed to stderr: "emd: Maximum number of iterations has been reached"
    2122
    2223
Note: See TracChangeset for help on using the changeset viewer.