如何从boost :: chrono :: hight_resolution_clock :: time_point获得纳秒?

时间:2016-08-03 18:04:34

标签: c++ c++11 boost chrono

我是提升和计时的新手。我正在编写一个记录器,记录API调用的时间戳,进入和退出。我首先尝试使用boost :: xtime,但它没有提供我需要的高分辨率值。因此正在考虑使用Chrono。我宣布了一个boost :: chrono :: hight_resolution_clock :: time_stamp x;获取时间戳的变量并将其分配给boost :: chrono :: hight_resolution_clock :: now();.现在,我需要从这个变量中获取纳秒并将其放入我的日志文件中(这就是要求)。所以我把它转换为boost :: chrono :: duration_cast(x)。但它不会让我这样做。它显然需要2个参数,我只有一个。有办法解决这个问题吗?是否可以创建另一个time_stamp变量并为其赋值并使用该变量?我尝试分配零,但它不起作用。请帮助我。

谢谢, 萨姆

2 个答案:

答案 0 :(得分:2)

如果标记为 <div class="subheader-bar"> <div class="row"> <div class="logo-b pull-left" style="border:none"> <img src="./images/hello-moto-4.jpg" alt="Hello Moto" class="img-responsive"> </div> <div id="navbar" class="navbar-collapse collapse pull-right"> <ul class="nav navbar-nav navbar-right"> <li><a href="bm_reportwriter_tpl-v3.html" class="text-center"><i class="fa fa-home fa-2x "></i> <br>Home</a></li> <li><a href="bm_summary_tpl.html" class="text-center"><i class="fa fa-info-circle fa-2x "></i> <br>About</a></li> <li><a href="bm_linechart_tpl.html" class="text-center"><i class="fa fa-area-chart fa-2x"></i> <br>Charts</a></li> <li><a href="#" class="text-center"><i class="fa fa-users fa-2x"></i> <br>Partners</a></li> <li><a href="#" class="text-center"><i class="fa fa-question-circle fa-2x"></i> <br>FAQ's</a></li> <li><a href="#" class="text-center"><i class="fa fa-list-ul fa-2x"></i><br> News</a></li> </ul> </div> </div> </div> <!-- Static Navigation --> <nav class="navbar navbar-inverse navbar-static-top"> <div class="container-fluid"> <div class="navbar-header v-spacer1"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Moto Moto </a> </div> <div id="navbar" class="navbar-collapse collapse"> <form class="navbar-form navbar-right v-spacer1"> <div class="input-group"> <span class="input-group-btn"> <button id="basic-search" class="btn btn-default " type="button" > <span class="glyphicon glyphicon-search" aria-hidden="true"></span></button> </span> <input type="text" id="basicsearchVal" class="form-control" placeholder="Enter a Ticker Symbol,CERT, BHCor a fragment of a Bank Name,." autocomplete="on"> <span class="input-group-btn spacer-l"> <button type="button" class="btn btn-primary " data-toggle="modal" data-target=".bs-example-modal-lg"> Advanced Search</button> </span> </div> </form> </div> </div> </nav> <!-- End Navigation --> <!-- LEFT NAVIGATION --> <div id="control-panel"> <div id="menu"> <nav class="navbar-default navbar-side" role="navigation"> <div class="sidebar-collapse"> <ul class="nav" id="main-menu"> <li> <a class="toggle-button-on" data-toggle="tooltip" data-placement="right" data-original-title="Open/Close"><i class="fa fa-exchange"></i><span> Open/Close</span></a> </li> <li> <a ui-sref="Home" data-toggle="tooltip" data-placement="right" data-original-title="User1"><i class="fa fa-user fa-lg"></i><span> Welcome User1</span></a> </li> <li> <a ui-sref="Home" data-toggle="tooltip" data-placement="right" data-original-title="Home"><i class="fa fa-home fa-lg"></i><span> Home</span></a> </li> <li> <a ui-sref="ScenarioComparison" data-toggle="tooltip" data-placement="right" data-original-title="Search"><i class="fa fa-search fa-lg"></i><span> Search</span></a> </li> <li ng-controller="scenarioController"> <a data-toggle="tooltip" data-placement="right" data-original-title="Charts"><i class="fa fa-bar-chart-o fa-lg"></i><span> Charts</span></a> </li> <li> <a ui-sref="ScenarioComparison" data-toggle="tooltip" data-placement="right" data-original-title="WatchList"><i class="fa fa-table fa-lg"></i><span> Todays List</span></a> </li> <li> <a ui-sref="Dashboard" data-toggle="tooltip" data-placement="right" data-original-title="DashBoard"><i class="fa fa-dashboard fa-lg"></i><span> FAQ</span></a> </li> </ul> </div> </nav> </div> </div> <!-- END LEFT NAVIGATION --> <div class="container-fluid"> <div class="row"> <div class="col-md-11" style="width:500px; float:right"> <h3 class="subheader" style="margin-top:50px"> Sample Info </h3> <div class="redmond"> <p> lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum </p> <table id="output"></table> </div> </div> </div> </div> <!-- begin footer --> <footer class="footer"> <div class="container"> <div class="tbs-content-container" > <div class="tbs-content" > <div class="tbs-row"> <div class="tbs-col tbs-w50 tbs-responsive" style="padding-top:12px;"> <p class="tbs-text-size-sm-1x" style="font-weight:bold;">HQ:</p> <p class="tbs-text-size-sm-1x"><i class="fa fa-map-marker fa-lg fa-fw"></i>&nbsp;&nbsp;3 moto ave, Diagon Alley, NJ 07364</p> <p class="tbs-text-size-sm-1x"><i class="fa fa-envelope fa-lg fa-fw"></i>&nbsp;&nbsp;<a href="mailto:info@totalbanksolutions.com">info@motowho.com</a></p> <p class="tbs-text-size-sm-1x"><i class="fa fa-phone fa-lg fa-fw"></i>&nbsp;&nbsp;(800) 300-MOTO</p> </div> <div class="tbs-col tbs-w50 tbs-responsive tbs-text-right"> <p><a href="index.html"><img class="tbs-responsive" src="images/moto_logo_transp.png" alt="moto Logo" style="max-width:150px"></a></p> <p class="tbs-text-size-sm-2x" id="footer-copyright">© 2016 MOTO Who.</p> </div> </div> <br><br> </div> </div> </div> </footer> ,为什么不使用c++11

std::chrono

答案 1 :(得分:1)

boost::chrono::duration_cast将持续时间转换为指定的单位,但您已将其设为boost::chrono::time_point,而非持续时间。

确实没有&#34; 以纳秒为单位的当前时间&#34;。要获得持续时间,您需要指定您想知道已经过了多少纳秒的时间(&#34; epoch&#34;)。不同的时钟将根据不同的时期来衡量他们的时间。

boost::chrono::system_clock(目前)使用Unix纪元(1970年1月1日午夜)作为它的纪元,但它不稳定,它可能没有你需要的分辨率(它在我的Ubuntu盒子上有纳秒,但在我的Windows盒子上只有1 / 10,000,000秒/秒。

boost::chrono::high_resolution_clock使用启动作为其纪元,稳定,并在我测试的两个盒子上测量时间(以纳秒为单位)。

Boost还提供其他时钟,如process_cpu_clock,使用其他时期,并计入其他单位。

因此,您可以使用system_clock从1970年1月1日起获得nanos,但它实际上可能不是纳秒准确的,并且如果用户更改系统时间或计算机与网络时间同步,它可能会倒退,或者你可以使用high_resolution_clock从其他时间点获得nanos。