$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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    <a href="index.html">
-    Library Home</a></td>
+    Library Home</a>    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">
+      <boost/chrono/process_times.hpp></a><br>
       <a href="../../../boost/ratio.hpp"><boost/ratio.hpp></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> 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>
+ </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>
+ </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>
+ </li>
+  </ul>
+  </li>
+  <li> 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 <boost/chrono/process_times.hpp>
+
+...
+
+// 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 <boost/chrono/process_times.hpp>
+#include <cmath>
+
+int main()
+{
+  boost::chrono::run_timer t;
+
+  for ( long i = 0; i < 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>  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    <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">
-      <boost/chrono/process_times.hpp></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>
- </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>
- </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 <boost/chrono/run_timer.hpp>
-#include <cmath>
-
-int main()
-{
-  boost::chrono::run_timer t;
-
-  for ( long i = 0; i < 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>   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 <boost/system/timer.hpp>
-#include <cmath>
-
-int main( int argc, char * argv[] )
-{
-  const char * format = argc > 1 ? argv[1] : "%t cpu seconds\n";
-  int          places = argc > 2 ? std::atoi( argv[2] ) : 2;
-
-  boost::system::run_timer t( format, places );
-
-  for ( long i = 0; i < 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 "%w wall clock seconds\n"
-0.41 wall clock seconds
-
-run_timer_example2 "%w wall clock seconds\n" 6
-0.421875 wall clock seconds
-
-run_timer_example2 "%t total CPU seconds\n" 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 & result );
-    error_code & times( times_t & result, error_code & ec );
-
-    // class timer ----------------------------------------------------//
-
-    class timer
-    {
-    public:
-
-      timer();
-      timer( const std::nothrow_t & );
-     ~timer();
-
-      void             start();
-      const times_t &  stop();
-      bool             stopped() const;
-      void             elapsed( times_t & 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 & os );
-
-      explicit run_timer( const std::string & format, int places = 2 );
-      run_timer( const std::string & format, int places, std::ostream & os );
-
-     ~run_timer();
-
-      void        report();
-      error_code  report( error_code & ec ); // never throws
-
-    private:
-      int             m_places;  // <i><b>exposition only</b></i>
-      std::ostream &  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 & 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 & times( times_t & result, error_code & 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 & );</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,  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 & 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 & 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>  m_places == places,<br>
-  m_os == std::cout,<br>
-  m_format == "\nwall %w s, user %u s + system %s s = total cpu %t s, %p% 
-  util\n"</code></p>
-</blockquote>
-<pre>run_timer( int places, std::ostream & os );</pre>
-<blockquote>
-  <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
-  <p><i>Postconditions:<br>
-  </i><code>  m_places == places,<br>
-  m_os == os,<br>
-  m_format == "\nwall %w s, user %u s + system %s s = total cpu %t s, %p% 
-  util\n"</code></p>
-</blockquote>
-<pre>explicit run_timer( const std::string & 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>  m_format == format,<br>
-  m_places == places,<br>
-  m_os == std::cout  </code></p>
-</blockquote>
-<pre>run_timer( const std::string & format, int places, std::ostream & os );</pre>
-<blockquote>
-  <p><i>Effects:</i> Constructs an object of type <code>run_timer</code>.</p>
-  <p><i>Postconditions:<br>
-  </i><code>  m_format == format,<br>
-  m_places == places,<br>
-  m_os == os  </code></p>
-</blockquote>
-<pre>~run_timer();</pre>
-<blockquote>
-  <p><i>Effects:</i> <br>
-  <code>  error_code ed;<br>
-  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 & ec )</code>. See below.</p>
-  <p><i>Note: </i>Does throw on errors.</p>
-</blockquote>
-<pre>error_code report( error_code & 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>  <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>