// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library analyzer.src.util.utilities_timing;

/**
 * A `CountedStopwatch` is a [Stopwatch] that counts the number of times the
 * stop method has been invoked.
 */
class CountedStopwatch extends Stopwatch {
  /**
   * The number of times the [stop] method has been invoked.
   */
  int stopCount = 0;

  /**
   * Initialize a newly created stopwatch.
   */
  CountedStopwatch();

  /**
   * The average number of millisecond that were recorded each time the [start]
   * and [stop] methods were invoked.
   */
  int get averageMilliseconds => elapsedMilliseconds ~/ stopCount;

  @override
  void reset() {
    super.reset();
    stopCount = 0;
  }

  @override
  void stop() {
    super.stop();
    stopCount++;
  }
}
