weka.core

## Class Debug.Clock

- java.lang.Object
- - weka.core.Debug.Clock

- All Implemented Interfaces:
    java.io.Serializable, RevisionHandler
  Enclosing class:
    Debug

      public static class Debug.Clock
      extends java.lang.Object
      implements java.io.Serializable, RevisionHandler

  A little helper class for clocking and outputting times. It measures the CPU time if possible, otherwise it's just based on the system time. In case one just wants to measure time (e.g., database queries don't take up much CPU time, but still might take a long time to finish), then one can disable the use of CPU time as well.
  Version:
    $Revision: 8034 $
  Author:
    FracPete (fracpete at waikato dot ac dot nz)
  See Also:
    `ThreadMXBean.isThreadCpuTimeEnabled()`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `FORMAT_HHMMSS` the output format in hours:minutes:seconds, with fraction of msecs
    `static int` | `FORMAT_MILLISECONDS` the output format in milli-seconds
    `static int` | `FORMAT_SECONDS` the output format in seconds, with fraction of msecs
    `int` | `m_OutputFormat` the format of the output
    `static Tag[]` | `TAGS_FORMAT` the output formats

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Debug.Clock()` automatically starts the clock with FORMAT_SECONDS format and CPU time if available
    `Debug.Clock(boolean start)` starts the clock depending on `start` immediately with the FORMAT_SECONDS output format and CPU time if available
    `Debug.Clock(boolean start, int format)` starts the clock depending on `start` immediately, using CPU time if available
    `Debug.Clock(int format)` automatically starts the clock with the given output format and CPU time if available

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getOutputFormat()` returns the output format
    `java.lang.String` | `getRevision()` Returns the revision string.
    `long` | `getStart()` returns the start time
    `long` | `getStop()` returns the stop time or, if still running, the current time
    `boolean` | `getUseCpuTime()` returns whether the use of CPU is time is enabled/disabled (regardless whether the system supports it or not)
    `boolean` | `isCpuTime()` whether the measurement is based on the msecs returned from the System class or on the more accurate CPU time.
    `boolean` | `isRunning()` whether the time is still being clocked
    `void` | `setOutputFormat(int value)` sets the format of the output
    `void` | `setUseCpuTime(boolean value)` enables/disables the use of CPU time (if measurement of CPU time is available).
    `void` | `start()` saves the current system time (or CPU time) in msec as start time
    `void` | `stop()` saves the current system (or CPU time) in msec as stop time
    `java.lang.String` | `toString()` returns the elapsed time, getStop() - getStart(), as string

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### FORMAT_MILLISECONDS

          public static final int FORMAT_MILLISECONDS

      the output format in milli-seconds
      See Also:
        Constant Field Values

    - #### FORMAT_SECONDS

          public static final int FORMAT_SECONDS

      the output format in seconds, with fraction of msecs
      See Also:
        Constant Field Values

    - #### FORMAT_HHMMSS

          public static final int FORMAT_HHMMSS

      the output format in hours:minutes:seconds, with fraction of msecs
      See Also:
        Constant Field Values

    - #### TAGS_FORMAT

          public static final Tag[] TAGS_FORMAT

      the output formats

    - #### m_OutputFormat

          public int m_OutputFormat

      the format of the output

  - ### Constructor Detail

    - #### Debug.Clock

          public Debug.Clock()

      automatically starts the clock with FORMAT_SECONDS format and CPU time if available
      See Also:
        `m_OutputFormat`

    - #### Debug.Clock

          public Debug.Clock(int format)

      automatically starts the clock with the given output format and CPU time if available
      Parameters:
        `format` - the output format
      See Also:
        `m_OutputFormat`

    - #### Debug.Clock

          public Debug.Clock(boolean start)

      starts the clock depending on `start` immediately with the FORMAT_SECONDS output format and CPU time if available
      Parameters:
        `start` - whether to start the clock immediately
      See Also:
        `m_OutputFormat`

    - #### Debug.Clock

          public Debug.Clock(boolean start,
                     int format)

      starts the clock depending on `start` immediately, using CPU time if available
      Parameters:
        `start` - whether to start the clock immediately
        `format` - the format
      See Also:
        `m_OutputFormat`

  - ### Method Detail

    - #### isCpuTime

          public boolean isCpuTime()

      whether the measurement is based on the msecs returned from the System class or on the more accurate CPU time. Also depends on whether the usage of the CPU time was disabled or enabled.
      Returns:
        true if the more accurate CPU time of the thread is used and the use of CPU time hasn't been disabled
      See Also:
        `System.currentTimeMillis()`, `ThreadMXBean.isThreadCpuTimeEnabled()`, `getUseCpuTime()`

    - #### setUseCpuTime

          public void setUseCpuTime(boolean value)

      enables/disables the use of CPU time (if measurement of CPU time is available). The actual use of CPU time still depends on whether the system supports it. Resets the current timer, if running.
      Parameters:
        `value` - if true the CPU time is used (if possible)

    - #### getUseCpuTime

          public boolean getUseCpuTime()

      returns whether the use of CPU is time is enabled/disabled (regardless whether the system supports it or not)
      Returns:
        true the CPU time is used (if possible)

    - #### start

          public void start()

      saves the current system time (or CPU time) in msec as start time
      See Also:
        `m_Start`

    - #### stop

          public void stop()

      saves the current system (or CPU time) in msec as stop time
      See Also:
        `m_Stop`

    - #### getStart

          public long getStart()

      returns the start time
      Returns:
        the start time

    - #### getStop

          public long getStop()

      returns the stop time or, if still running, the current time
      Returns:
        the stop time

    - #### isRunning

          public boolean isRunning()

      whether the time is still being clocked
      Returns:
        true if the time is still being clocked

    - #### setOutputFormat

          public void setOutputFormat(int value)

      sets the format of the output
      Parameters:
        `value` - the format of the output
      See Also:
        `m_OutputFormat`

    - #### getOutputFormat

          public int getOutputFormat()

      returns the output format
      Returns:
        the output format
      See Also:
        `m_OutputFormat`

    - #### toString

          public java.lang.String toString()

      returns the elapsed time, getStop() - getStart(), as string
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the elapsed time as string
      See Also:
        `getStart()`, `getStop()`

    - #### getRevision

          public java.lang.String getRevision()

      Returns the revision string.
      Specified by:
        `getRevision` in interface `RevisionHandler`
      Returns:
        the revision