|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r74668 - trunk/boost/chrono/detail/inlined/mac
From: vicente.botet_at_[hidden]
Date: 2011-10-03 10:48:08
Author: viboes
Date: 2011-10-03 10:48:07 EDT (Mon, 03 Oct 2011)
New Revision: 74668
URL: http://svn.boost.org/trac/boost/changeset/74668
Log:
Chrono: process real cpu clock uses clock instead of times which is twice faster and with high resolution for MacOs
Text files modified:
trunk/boost/chrono/detail/inlined/mac/chrono.hpp | 3 +--
trunk/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp | 33 ++++++++++++++++++++++++++++++++-
2 files changed, 33 insertions(+), 3 deletions(-)
Modified: trunk/boost/chrono/detail/inlined/mac/chrono.hpp
==============================================================================
--- trunk/boost/chrono/detail/inlined/mac/chrono.hpp (original)
+++ trunk/boost/chrono/detail/inlined/mac/chrono.hpp 2011-10-03 10:48:07 EDT (Mon, 03 Oct 2011)
@@ -114,8 +114,7 @@
static const double factor = chrono_detail::compute_steady_factor(err);
if (err != 0)
{
- boost::throw_exception(
- system::system_error( err, BOOST_CHRONO_SYSTEM_CATEGORY, "chrono::steady_clock" ));
+ BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
}
return static_cast<steady_clock::rep>(mach_absolute_time() * factor);
}
Modified: trunk/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp
==============================================================================
--- trunk/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp (original)
+++ trunk/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp 2011-10-03 10:48:07 EDT (Mon, 03 Oct 2011)
@@ -45,9 +45,10 @@
}
}
+
process_real_cpu_clock::time_point process_real_cpu_clock::now() BOOST_CHRONO_NOEXCEPT
{
-
+#if 0
tms tm;
clock_t c = ::times(&tm);
if (c == clock_t(-1)) // error
@@ -65,11 +66,22 @@
}
}
return time_point();
+#else
+ clock_t c = ::clock();
+ if (c == clock_t(-1)) // error
+ {
+ BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
+ }
+ return time_point(
+ duration(c*(1000000000l/CLOCKS_PER_SEC))
+ );
+#endif
}
process_real_cpu_clock::time_point process_real_cpu_clock::now(system::error_code & ec)
{
+#if 0
tms tm;
clock_t c = ::times(&tm);
if (c == clock_t(-1)) // error
@@ -104,6 +116,25 @@
}
}
}
+#else
+ clock_t c = ::clock();
+ if (c == clock_t(-1)) // error
+ {
+ if (BOOST_CHRONO_IS_THROWS(ec))
+ {
+ boost::throw_exception(system::system_error(errno, BOOST_CHRONO_SYSTEM_CATEGORY, "chrono::process_real_cpu_clock"));
+ } else
+ {
+ ec.assign(errno, BOOST_CHRONO_SYSTEM_CATEGORY);
+ return time_point();
+ }
+ }
+ return time_point(
+ duration(c*(1000000000l/CLOCKS_PER_SEC))
+ );
+
+#endif
+
}
process_user_cpu_clock::time_point process_user_cpu_clock::now(system::error_code & ec)
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