Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r49825 - in sandbox/chrono/libs/chrono: . doc example test/chrono_msvc test/chrono_msvc/run_timer_example
From: bdawes_at_[hidden]
Date: 2008-11-18 12:00:54


Author: bemandawes
Date: 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
New Revision: 49825
URL: http://svn.boost.org/trac/boost/changeset/49825

Log:
Chrono: docs and examples additions and improvements
Added:
   sandbox/chrono/libs/chrono/doc/process_times.html (props changed)
      - copied unchanged from r49824, /sandbox/chrono/libs/chrono/doc/timer.html
   sandbox/chrono/libs/chrono/index.html (contents, props changed)
   sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/
   sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj (contents, props changed)
Removed:
   sandbox/chrono/libs/chrono/doc/timer.html
Text files modified:
   sandbox/chrono/libs/chrono/doc/index.html | 109 +++++++++++++++++++++++++++++++++++++--
   sandbox/chrono/libs/chrono/example/run_timer_example.cpp | 12 ++--
   sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln | 6 ++
   3 files changed, 113 insertions(+), 14 deletions(-)

Modified: sandbox/chrono/libs/chrono/doc/index.html
==============================================================================
--- sandbox/chrono/libs/chrono/doc/index.html (original)
+++ sandbox/chrono/libs/chrono/doc/index.html 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
@@ -25,7 +25,7 @@
 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
   <tr>
     <td>Boost Home&nbsp;&nbsp;&nbsp; <a href="index.html">
- Library Home</a></td>
+ Library Home</a>&nbsp;&nbsp;&nbsp; Process Times Docs </td>
   </tr>
 </table>
 
@@ -37,6 +37,8 @@
   <tr>
     <td width="100%" bgcolor="#E8F5FF">
       <a href="#Introduction">Introduction</a><br>
+ Getting started<br>
+ Caveat emptor<br>
       <a href="#Examples">Examples</a><br>
       <a href="#Reference">Reference material</a><br>
       <a href="#Acknowledgements">Acknowledgements</a>
@@ -48,17 +50,109 @@
   </tr>
   <tr>
     <td width="100%" bgcolor="#E8F5FF">
- <boost/chrono.hpp><br>
+ <boost/chrono/chrono.hpp><br>
+ <boost/chrono/timer.hpp><br>
+ <a href="../../../boost/chrono/process_times.hpp">
+ &lt;boost/chrono/process_times.hpp&gt;</a><br>
       <a href="../../../boost/ratio.hpp">&lt;boost/ratio.hpp&gt;</a></td>
   </tr>
 </table>
 
 <h2><a name="Introduction">Introduction</a></h2>
 
-<p>The Boost Chrono library provides an implementation of the C++0x Standard
-Library's new time utilities and compile-time rational arithmetic. The
-implementation will work with most C++03 conforming compilers.</p>
+<p>The Boost Chrono library provides:</p>
 
+<ul>
+ <li>&nbsp;The C++0x Standard Library's time utilities, including:<ul>
+ <li>Class template duration</li>
+ <li>Class template time_point</li>
+ <li>Clocks:<ul>
+ <li><code>system_clock</code></li>
+ <li><code>monotonic_clock</code></li>
+ <li><code>high_resolution_clock</code><br>
+&nbsp;</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>Class template <code>timer</code>, with typedefs:<ul>
+ <li><code>system_timer</code></li>
+ <li><code>monotonic_timer</code></li>
+ <li><code>high_resolution_timer</code><br>
+&nbsp;</li>
+ </ul>
+ </li>
+ <li>Process clocks and timers:<ul>
+ <li><code>process_clock</code>, capturing real, user-CPU, and system-CPU
+ times.</li>
+ <li><code>process_timer</code>, capturing elapsed real, user-CPU, and
+ system-CPU times.</li>
+ <li><code>run_timer</code>, convenient reporting of <code>process_timer</code>
+ results.<br>
+&nbsp;</li>
+ </ul>
+ </li>
+ <li>&nbsp;The C++0x Standard Library's compile-time rational arithmetic.</li>
+</ul>
+
+<p>The implementation will eventually work with most C++03 conforming compilers.
+Initial tests have been run on Windows with VC++ 9.0 SP1 and Intel 11.0, and on
+Ubuntu Linux with GCC 4.2.4.</p>
+
+<h2><a name="Getting-started">Getting started</a></h2>
+
+<p>If all you want to do is to time a program's execution:</p>
+
+<blockquote>
+ <pre>#include &lt;boost/chrono/process_times.hpp&gt;
+
+...
+
+// add this in the scope you want to time,
+// at the point you want the timer to start.
+boost::chrono::run_timer rt;</pre>
+</blockquote>
+<p>Here is a complete program (run_timer_example.cpp):</p>
+<blockquote>
+ <pre>#include &lt;boost/chrono/process_times.hpp&gt;
+#include &lt;cmath&gt;
+
+int main()
+{
+ boost::chrono::run_timer t;
+
+ for ( long i = 0; i &lt; 10000000; ++i )
+ std::sqrt( 123.456L ); // burn some time
+
+ return 0;
+}</pre>
+</blockquote>
+<p>Debug build output was:</p>
+<blockquote>
+ <pre>real 0.832s, cpu 0.813s (97.7%), user 0.813s, system 0.000s</pre>
+</blockquote>
+<p>In other words, the program took 0.832 real-time (i.e. wall clock) seconds to
+execute, while the operating system (Windows in this case) charged 0.813 seconds
+of CPU time to the user and 0 seconds to the system. The total CPU time reported
+was 0.813 seconds, and that represented utilization of 97.7% of the real-time
+seconds.</p>
+<h2><a name="Caveat">Caveat</a> emptor</h2>
+<p>The underlying clocks provided by operating systems are subject to many
+seemingly arbitrary policies and implementation irregularities. That's a polite
+way of saying they tend to be flakey, and each operating system or even each
+clock has its own cruel and unusual forms of flakiness. Don't bet the farm on
+their accuracy, unless you have become deeply familiar with exactly what the
+specific operating system is guaranteeing, which is often very little.</p>
+<h2>FAQ</h2>
+<p><b>Why does run_timer only display millisecond place precision when the
+underlying timer has nanosecond precision?</b>&nbsp; To avoid giving the
+impression of precision where none exists. See Caveat emptor.
+You can always specify additional decimal places if you want to live
+dangerously.</p>
+<p><b>Why does run_timer sometimes report more cpu seconds than real seconds?</b>
+Ask your operating system supplier. The results have been inspected with a
+debugger, and both for Windows and Linux, that's what the OS appears to be
+reporting at times.</p>
 <h2><a name="Examples">Examples</a></h2>
 <ul>
   <li>await_keystroke.cpp - A tiny
@@ -69,8 +163,7 @@
 <h2><a name="Reference">Reference</a> material</h2>
 <p>The most authoritative reference material for the library is the C++
 Standards Committee's current Working Paper (WP). Found on the
-WG21 web site in the
-mailings section.</p>
+WG21 web site.</p>
 <p>See sections:</p>
 <ul>
   <li>20.9 Time utilities [time]</li>
@@ -94,7 +187,7 @@
 <hr>
 
 <p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->November 12, 2008<!--webbot bot="Timestamp" endspan i-checksum="39582" --> </font>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->November 18, 2008<!--webbot bot="Timestamp" endspan i-checksum="39606" --> </font>
 </p>
 
 <p>© Copyright Beman Dawes, 2008</p>

Deleted: sandbox/chrono/libs/chrono/doc/timer.html
==============================================================================
--- sandbox/chrono/libs/chrono/doc/timer.html 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
+++ (empty file)
@@ -1,478 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>Chrono: Process Times</title>
-<link rel="stylesheet" type="text/css" href="../../../doc/html/minimal.css">
-</head>
-
-<body>
-
-<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
- <tr>
- <td width="277">
-<a href="../../../index.html">
-<img src="../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"></a></td>
- <td width="337" align="middle">
- <font size="7">Chrono: Process Times</font>
- </td>
- </tr>
-</table>
-
-<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
- <tr>
- <td>Boost Home&nbsp;&nbsp;&nbsp; <a href="index.html">
- Library Home</a></td>
- </tr>
-</table>
-
-<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" align="right">
- <tr>
- <td width="100%" bgcolor="#D7EEFF" align="center">
- <i><b>Contents</b></i></td>
- </tr>
- <tr>
- <td width="100%" bgcolor="#E8F5FF">
- Introduction<br>
- Examples<br>
- Reference material<br>
- Acknowledgements
- </td>
- </tr>
- <tr>
- <td width="100%" bgcolor="#D7EEFF" align="center">
- <b><i>Headers</i></b></td>
- </tr>
- <tr>
- <td width="100%" bgcolor="#E8F5FF">
- <boost/chrono/chrono.hpp><br>
- <boost/chrono/timer.hpp><br>
- <a href="../../../boost/chrono/process_times.hpp">
- &lt;boost/chrono/process_times.hpp&gt;</a><br>
- <boost/ratio.hpp></td>
- </tr>
-</table>
-
-<h2><a name="Introduction">Introduction</a></h2>
-<p>Knowing how long a program takes to execute is useful in both test and
-production environments. It is also helpful if such timing information is broken down
-into real (wall clock) time, CPU time spent by the user, and CPU time spent by the
-operating system servicing user requests.</p>
-<p>The Boost Chrono Library's process times components provide that information:</p>
-<ul>
- <li>At the highest level, class <code>run_timer</code> provides a
- complete run time reporting package that can be invoked in a single line of
- code.<br>
-&nbsp;</li>
- <li>At a middle level, class <code>process_timer</code> provides a process timer useful
- when the automatic reporting of <code>run_timer</code> isn't desired.<br>
-&nbsp;</li>
- <li>At the lowest level, <code>process_clock</code> provides a
- thin wrapper around the operating system's process timer API. For POSIX-like
- systems, that's the <code>times()</code> function, while for Windows, it's the
- <code>GetProcessTimes()</code> function.</li>
-</ul>
-
-<h2><a name="Example">Example</a>s</h2>
-
-<p>Here is the run_timer_example.cpp
-program supplied with the Boost System library:</p>
-<blockquote>
- <pre>#include &lt;boost/chrono/run_timer.hpp&gt;
-#include &lt;cmath&gt;
-
-int main()
-{
- boost::chrono::run_timer t;
-
- for ( long i = 0; i &lt; 10000000; ++i )
- std::sqrt( 123.456L ); // burn some time
-
- return 0;
-}</pre>
-</blockquote>
-<p><b><span style="background-color: #FFFF00">Warning: The remainder of this
-page is totally out-of-date</span></b></p>
-<p>When the <code>run_timer t</code> object is created, it starts timing. When
-it is destroyed at the end of the program, its destructor stops the timer and
-displays timing information on cout.</p>
-<p>The output of this program run on a circa 2006 processor looks was this:</p>
-<p><code>&nbsp;&nbsp; wall 0.42 s, user 0.41 s + system 0.00 s = total cpu 0.41 s,
-(96.3%)</code></p>
-<p>In other words, this program ran in 0.42 seconds as would be measured by a
-clock on the wall, the operating system charged it for 0.41 seconds of user CPU
-time and 0 seconds of system CPU time, the total of these two was 0.41, and that
-represented 96.3 percent of the wall clock time.</p>
-
-<p>The run_timer_example2.cpp
-program is the same, except that it supplies additional constructor arguments
-from the command line:</p>
-<blockquote>
- <pre>#include &lt;boost/system/timer.hpp&gt;
-#include &lt;cmath&gt;
-
-int main( int argc, char * argv[] )
-{
- const char * format = argc &gt; 1 ? argv[1] : &quot;%t cpu seconds\n&quot;;
- int places = argc &gt; 2 ? std::atoi( argv[2] ) : 2;
-
- boost::system::run_timer t( format, places );
-
- for ( long i = 0; i &lt; 10000000; ++i )
- std::sqrt( 123.456L ); // burn some time
-
- return 0;
-}</pre>
-</blockquote>
-<p>Here is the output for this program for several sets of command line
-arguments:</p>
-<blockquote>
- <pre>run_timer_example2
-0.42 cpu seconds
-
-run_timer_example2 &quot;%w wall clock seconds\n&quot;
-0.41 wall clock seconds
-
-run_timer_example2 &quot;%w wall clock seconds\n&quot; 6
-0.421875 wall clock seconds
-
-run_timer_example2 &quot;%t total CPU seconds\n&quot; 3
-0.422 total CPU seconds</pre>
-</blockquote>
-<h2>Header
-<font size="5">boost/system/timer.hpp
-synopsis</font></h2>
-<pre>namespace boost
-{
- namespace system
- {
- typedef <i>implementation-defined</i> microsecond_t;
-
- struct times_t;
- class timer;
- class run_timer;
-
- struct times_t
- {
- microsecond_t wall;
- microsecond_t user;
- microsecond_t system;
- };
-
- // low-level functions --------------------------------------------//
-
- void times( times_t &amp; result );
- error_code &amp; times( times_t &amp; result, error_code &amp; ec );
-
- // class timer ----------------------------------------------------//
-
- class timer
- {
- public:
-
- timer();
- timer( const std::nothrow_t &amp; );
- ~timer();
-
- void start();
- const times_t &amp; stop();
- bool stopped() const;
- void elapsed( times_t &amp; result );
-
- private:
- times_t m_times; // <i><b>exposition only</b></i>
- };
-
- // class run_timer ------------------------------------------------//
-
- class run_timer : public timer
- {
- public:
- explicit run_timer( int places = 2 );
- run_timer( int places, std::ostream &amp; os );
-
- explicit run_timer( const std::string &amp; format, int places = 2 );
- run_timer( const std::string &amp; format, int places, std::ostream &amp; os );
-
- ~run_timer();
-
- void report();
- error_code report( error_code &amp; ec ); // never throws
-
- private:
- int m_places; // <i><b>exposition only</b></i>
- std::ostream &amp; m_os; // <i><b>exposition only</b></i>
- std::string m_format; // <i><b>exposition only</b></i>
- };
-
- } // namespace system
-} // namespace boost
-</pre>
-
-<h3>Typedef <a name="microsecond_t"><code>microsecond_t</code></a></h3>
-
-<p>The typedef <code>microsecond_t</code> provides an implementation defined type capable
-of representing microseconds. For POSIX and Windows systems, <code>
-microseconds_t</code> is <code>boost::int_least64_</code>t.</p>
-
-<p>The underlying type is not based on the Boost Date-Time library to avoid a
-dependency on a large library. This design choice may change at some future
-date.</p>
-
-<p>Although <code>microsecond_t</code> is capable of representing .000001
-second, the actual resolution of common operating system timers is often only
-.015 second.</p>
-
-<h3>Struct <a name="times_t"><code>times_t</code></a></h3>
-
-<p>The struct <code>times_t</code> packages three elapsed times:</p>
-
-<ul>
- <li>Wall clock elapsed time, equivalent to the time that would be recorded by
- a stopwatch.</li>
- <li>User central processing unit (CPU) time used by the process, as charged by
- the operating system.</li>
- <li>System central processing unit (CPU) time used by the process, as charged
- by the operating system.</li>
-</ul>
-
-<h3><a name="Non-member-functions">Non-member functions</a></h3>
-
-<p>These low-level functions are thin wrappers around the operating system's API
-process timing function, such as POSIX <code>times()</code> or <code>Windows
-GetProcessTimes()</code>.</p>
-
-<p><code>void times( times_t &amp; result );</code></p>
-
-<blockquote>
-
-<p><i>Effects:</i> Stores wall-clock, process user CPU, and process system CPU times,
-as reported by the operating system's API process timing function, in r<code>esult</code>.</p>
-
-<p><i>Throws:</i> <code>boost::system::system::error</code> if the underlying
-operating system API call reports an error.</p>
-
-</blockquote>
-
-<p><code>error_code &amp; times( times_t &amp; result, error_code &amp; ec );</code></p>
-
-<blockquote>
-
-<p><i>Effects:</i> Stores wall-clock, process user CPU, and process system CPU times,
-as reported by the operating system's API process timing function, in r<code>esult</code>.
-If the API call reports an error, sets <code>ec</code> accordingly. Otherwise,
-calls <code>ec.clear()</code>.</p>
-
-</blockquote>
-
-<h3>Class <code><a name="timer">timer</a></code></h3>
-
-<p>A <code>timer</code> object measures wall-clock elapsed time, process elapsed
-time charged to the user, and process elapsed time charged to the system.</p>
-
-<p>Unless otherwise specified, all member functions report errors by throwing <code>system_error</code>
-exceptions. If an error occurs and an exception is not thrown, errors are
-reported by setting time values to -1.</p>
-
-<p>The semantics of member functions are achieved by calling the <code>
-times()</code> function.</p>
-
-<h3>Class <a name="cpu_timer_members"><code>timer</code> members</a></h3>
-
-<p><code>timer();</code></p>
-
-<blockquote>
-<p><i>Effects:</i> <code>start()</code>.</p>
-
-</blockquote>
-
-<p><code>timer( const std::nothrow_t &amp; );</code></p>
-
-<blockquote>
-<p><i>Effects:</i> <code>start()</code>.</p>
-
-<p><i>Remarks:</i> Member functions for this object will not throw exceptions.</p>
-
-<p><i>Note: </i>On popular operating systems, such as POSIX and Windows, the question of how to handle errors is moot
-since timer errors do no occur. For programs which may
-run on systems that may possibly report timer errors, the <code>nothrow</code>
-constructor allows suppression of exceptions without the interface thickening
-that would be required if all functions had <code>error_code</code> returning
-variations. In the rare cases where exceptions are undesirable yet the <code>
-error_code</code> must be captured,&nbsp; the non-member <code>times</code>
-function's overload returning an <code>error_code</code> can be used.</p>
-
-</blockquote>
-<p><code>~timer();</code></p>
-
-<blockquote>
-<p><i>Effects:</i> None.</p>
-
-<p><i>Throws:</i> Never.</p>
-
-</blockquote>
-<p><code>void start();</code></p>
-
-<blockquote>
-<p><i>Effects:</i> Begins measuring
-wall-clock, user process, and system process elapsed time.</p>
-
-<p><i>Postconditions:</i> <code>stopped() == false</code>.</p>
-
-</blockquote>
-<p><code>const times_t &amp; stop();</code></p>
-
-<blockquote>
-<p><i>Effects:</i> If <code>!stopped()</code>, stops measuring wall-clock, user
-CPU, and system CPU elapsed time, and stores in a <code>time_t</code> struct the time
-elapsed since the
-preceding invocation of <code>start()</code>. Otherwise, has no effect.</p>
-
-<p><i>Returns:</i> A reference to the <code>time_t</code> struct.</p>
-
-<p><i>Postconditions:</i> <code>stopped() == true</code>.</p>
-
-</blockquote>
-
-<p><code>bool stopped() const;</code></p>
-
-<blockquote>
-
-<p><i>Returns:</i> true if <code>stop()</code> has been called subsequent to a call to
-<code>start()</code>, else <code>false</code>.</p>
-
-</blockquote>
-
-<p><code>void elapsed( times_t &amp; result );</code></p>
-
-<blockquote>
-
-<p><i>Effects:</i> Stores wall-clock, process user CPU, and process system CPU elapsed times
-in r<code>esult</code>.
-If <code>stopped() == false,</code> the times are those measured since the
-preceding invocation of <code>start()</code>, otherwise the times are those
-stored by the preceding invocation of <code>stop()</code>.</p>
-
-<p><i>Remark:</i> Does not call <code>stop()</code>.</p>
-
-</blockquote>
-
-<h3>Class <a name="run_timer">run_timer</a></h3>
-
-<p>Class <code>run_timer</code> inherits publicly from <code><a href="#timer">
-timer</a></code>. For the description of inherited functions, see
-Class timer.</p>
-
-<h3>Class run_timer members</h3>
-
-<pre>explicit run_timer( int places = 2 );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
- <p><i>Postconditions:<br>
- </i><code>&nbsp; m_places == places,<br>
-&nbsp; m_os == std::cout,<br>
-&nbsp; m_format == &quot;\nwall %w s, user %u s + system %s s = total cpu %t s, %p%
- util\n&quot;</code></p>
-</blockquote>
-<pre>run_timer( int places, std::ostream &amp; os );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
- <p><i>Postconditions:<br>
- </i><code>&nbsp; m_places == places,<br>
-&nbsp; m_os == os,<br>
-&nbsp; m_format == &quot;\nwall %w s, user %u s + system %s s = total cpu %t s, %p%
- util\n&quot;</code></p>
-</blockquote>
-<pre>explicit run_timer( const std::string &amp; format, int places = 2 );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
- <p><i>Postconditions:<br>
- </i><code>&nbsp; m_format == format,<br>
-&nbsp; m_places == places,<br>
-&nbsp; m_os == std::cout&nbsp; </code></p>
-</blockquote>
-<pre>run_timer( const std::string &amp; format, int places, std::ostream &amp; os );</pre>
-<blockquote>
- <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
- <p><i>Postconditions:<br>
- </i><code>&nbsp; m_format == format,<br>
-&nbsp; m_places == places,<br>
-&nbsp; m_os == os&nbsp; </code></p>
-</blockquote>
-<pre>~run_timer();</pre>
-<blockquote>
- <p><i>Effects:</i> <br>
- <code>&nbsp; error_code ed;<br>
-&nbsp; if ( !stopped() ) report( ec );</code></p>
-<p><i>Throws:</i> Never.</p>
-
-</blockquote>
-<pre>void report();</pre>
-<blockquote>
- <p><i>Effects:</i> Same as <code>report( error_code &amp; ec )</code>. See below.</p>
- <p><i>Note: </i>Does throw on errors.</p>
-</blockquote>
-<pre>error_code report( error_code &amp; ec );</pre>
-<blockquote>
-
-<p><i>Effects: </i>Displays times on <code>m_os</code>:</p>
-
- <ul>
- <li><code>stop()</code>.</li>
- <li>Saves <code>m_os</code> <code>ios</code> flags and precision.</li>
- <li>Sets <code>m_os</code>&nbsp; <code>ios</code> flags and precision as if by:<ul>
- <li><code>m_os.setf( std::ios_base::fixed, std::ios_base::floatfield )</code></li>
- <li><code>m_os.precision( m_places )</code></li>
- </ul>
- </li>
- <li>Outputs <code>m_format</code> to <code>m_os</code>, replacing the character
- sequences shown in the table below with the indicated values.</li>
- <li>Restores saved <code>iso</code> flags and precision.</li>
- <li>If an error occurs during output, sets <code>ec</code> to the
- corresponding error condition. Otherwise, calls <code>ec.clear()</code>.</li>
-</ul>
-
- <table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="39%">
- <tr>
- <td width="25%"><b><i>Sequence</i></b></td>
- <td width="75%"><b><i>Replacement value</i></b></td>
- </tr>
- <tr>
- <td width="25%" align="center"><code>%r</code></td>
- <td width="75%"><code>real</code></td>
- </tr>
- <tr>
- <td width="25%" align="center"><code>%u</code></td>
- <td width="75%"><code>user</code></td>
- </tr>
- <tr>
- <td width="25%" align="center"><code>%s</code></td>
- <td width="75%"><code>system()</code></td>
- </tr>
- <tr>
- <td width="25%" align="center"><code>%t</code></td>
- <td width="75%"><code>user + system</code></td>
- </tr>
- <tr>
- <td width="25%" align="center"><code>%p</code></td>
- <td width="75%">The percentage of <code>real</code> represented by by <code>
- user + system</code></td>
- </tr>
- </table>
- <p><i>Returns:</i> <code>ec</code></p>
- <p><i>Throws:</i> Never.</p>
-</blockquote>
-
-<hr>
-<p>Last revised:
-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->18 November, 2008<!--webbot bot="Timestamp" endspan i-checksum="39373" --></p>
-<p>© Copyright Beman Dawes, 2006, 2008</p>
-<p>Distributed under the Boost Software License, Version 1.0. See
-www.boost.org/ LICENSE_1_0.txt)</p>
-
-</body>
-
-</html>
\ No newline at end of file

Modified: sandbox/chrono/libs/chrono/example/run_timer_example.cpp
==============================================================================
--- sandbox/chrono/libs/chrono/example/run_timer_example.cpp (original)
+++ sandbox/chrono/libs/chrono/example/run_timer_example.cpp 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
@@ -1,18 +1,18 @@
 // run_timer_example.cpp ---------------------------------------------------//
 
-// Copyright Beman Dawes 2006
+// Copyright Beman Dawes 2006, 2008
 
-// 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)
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
 
-// See http://www.boost.org/libs/system for documentation.
+// See http://www.boost.org/libs/chrono for documentation.
 
-#include <boost/system/timer.hpp>
+#include <boost/chrono/process_times.hpp>
 #include <cmath>
 
 int main()
 {
- boost::system::run_timer t;
+ boost::chrono::run_timer t;
 
   for ( long i = 0; i < 10000000; ++i )
     std::sqrt( 123.456L ); // burn some time

Added: sandbox/chrono/libs/chrono/index.html
==============================================================================
--- (empty file)
+++ sandbox/chrono/libs/chrono/index.html 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
@@ -0,0 +1,14 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=doc/index.html">
+</head>
+<body>
+Automatic redirection failed, please go to
+doc/index.html.
+<hr>
+<p>© Copyright Beman Dawes, 2003</p>
+<p> Distribution under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
+www.boost.org/LICENSE_1_0.txt</a>)</p>
+</body>
+</html>
\ No newline at end of file

Modified: sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln
==============================================================================
--- sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln (original)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/chrono_msvc.sln 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
@@ -9,6 +9,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_timer_test", "run_timer_test\run_timer_test.vcproj", "{BD153170-B250-4081-A736-603A593B470B}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "run_timer_example", "run_timer_example\run_timer_example.vcproj", "{50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -31,6 +33,10 @@
                 {BD153170-B250-4081-A736-603A593B470B}.Debug|Win32.Build.0 = Debug|Win32
                 {BD153170-B250-4081-A736-603A593B470B}.Release|Win32.ActiveCfg = Release|Win32
                 {BD153170-B250-4081-A736-603A593B470B}.Release|Win32.Build.0 = Release|Win32
+ {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Debug|Win32.Build.0 = Debug|Win32
+ {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Release|Win32.ActiveCfg = Release|Win32
+ {50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE

Added: sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj
==============================================================================
--- (empty file)
+++ sandbox/chrono/libs/chrono/test/chrono_msvc/run_timer_example/run_timer_example.vcproj 2008-11-18 12:00:53 EST (Tue, 18 Nov 2008)
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="run_timer_example"
+ ProjectGUID="{50E5BCF6-2AF4-4020-8370-7D39C33BF9F9}"
+ RootNamespace="run_timer_example"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets="..\common.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\chrono.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\system\src\error_code.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\process_clock.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\run_timer.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\example\run_timer_example.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\src\run_timer_static.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk