log_stats_by_id(id, noise_threshold, below_threshold, above_threshold, fixed, unconverted) {
    const stats = PERF.get_stats_by_id(id);
    if (stats != null) {
      Logger.module('PERF').group(`Performance for ${id}`);
      Logger.module('PERF').log('entries: ', stats.get_num_records());
      Logger.module('PERF').log('average: ', stats.average(fixed, unconverted));
      Logger.module('PERF').log('deviation: ', stats.deviation(fixed, unconverted));
      if (noise_threshold == null) { noise_threshold = stats.get_noise_threshold(); }
      if (noise_threshold != null) {
        Logger.module('PERF').log(`noise(${noise_threshold}): `, stats.noise(noise_threshold, fixed, unconverted));
      }
      if (below_threshold == null) { below_threshold = stats.get_below_threshold(); }
      if (below_threshold != null) {
        Logger.module('PERF').log(`below(${below_threshold}): `, stats.below(below_threshold, fixed, unconverted));
      }
      if (above_threshold == null) { above_threshold = stats.get_above_threshold(); }
      if (above_threshold != null) {
        Logger.module('PERF').log(`above(${above_threshold}): `, stats.above(above_threshold, fixed, unconverted));
      }
      Logger.module('PERF').groupEnd();
    } else {
      Logger.module('PERF').log(`no stats found for ${id}`);
    }
  }
Logs stats by id.
@param id
@param {Number} [noise_threshold=0] difference between average and entry to consider it noisy
@param {Number} [below_threshold=0] threshold which entries are considered below
@param {Number} [above_threshold=0] threshold which entries are considered above
@param {Number} [fixed=2] number of digits to appear after the decimal point
@param {Boolean} [unconverted=false] whether to get the raw recorded values