[/
 / Copyright (c) 2009-20012 Vicente J. Botet Escriba
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]


[/==================]
[/section Motivation]
[/==================]


[heading Measuring elapsed time]

Knowing how long a program, a function or a specific code block takes to execute is useful in both test and production environments.
__Boost_Chrono introduces the __strict_stopwatch_concept concept which is a mechanism to measure the elapsed time.
__strict_stopwatch`<>` is the basic model of __strict_stopwatch_concept.

[heading Reporting elapsed time]

It is often necessary to report elapsed time on a user display or in a log file.  __stopwatch_reporter provides a runtime reporting mechanism for this purpose which can be invoked in just one line of code.

    using namespace boost::chrono;
    int main()
    {
        __stopwatch_reporter<__stopwatch<__process_cpu_clocks> > _;
      // ...
    }

Will produce the following output

    real 0.034s, cpu 0.031s (93.0%), user 0.031s, system 0.000s

As this is one of the expression more commonly use, the library provides a __stopclock shortcut so the preceding can be written as

    int main()
    {
        __stopclock<__process_cpu_clocks> _;
      // ...
    }


