NoS*_*tAl 31 c++ time c++11 c++-chrono
我有一个愚蠢的问题.我尝试切换到c ++ 11标头,其中一个是chrono.但我的问题是我无法控制时间操作的结果.例如:
auto t=std::chrono::high_resolution_clock::now();
cout<<t.time_since_epoch();
Run Code Online (Sandbox Code Playgroud)
得到:
初始化
‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char, _Traits = std::char_traits<char>, _Tp = std::chrono::duration<long int, std::ratio<1l, 1000000l> >]’
... /usr/include/c++/4.6/ostream的 参数1
cout<<(uint64_t)t.time_since_epoch();
Run Code Online (Sandbox Code Playgroud)
给出无效的演员
How*_*ant 38
正如其他人所说,您可以调用count()
成员函数来获取内部计数.
我想补充说我正在尝试添加一个新标题:<chrono_io>
到这个库.这里记录在案.<chrono_io>
超过使用的主要优点count()
是编译时单元为您打印.这些信息当然可以手动获取,但是为您提供库更容易.
对我来说,你的榜样:
#include <iostream>
#include <chrono_io>
int main()
{
auto t = std::chrono::high_resolution_clock::now();
std::cout << t.time_since_epoch() << '\n';
}
Run Code Online (Sandbox Code Playgroud)
输出:
147901305796958 nanoseconds
Run Code Online (Sandbox Code Playgroud)
执行此操作的源代码是开源的,可在上面的链接中找到.它由两个标题组成:<ratio_io>
和<chrono_io>
,和1个来源:chrono_io.cpp
.
此代码应视为实验性的.它不是标准的,几乎肯定不会标准化.事实上,LWG的初步评论表明,他们更希望默认输出是该软件所称的"简短形式".可以通过以下方式获得此替代输出:
std::cout << std::chrono::duration_fmt(std::chrono::symbol)
<< t.time_since_epoch() << '\n';
Run Code Online (Sandbox Code Playgroud)
并输出:
147901305796958 ns
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 23
快速谷歌搜索找到了这个页面:http://en.cppreference.com/w/cpp/chrono/duration,您可以在其中找到打印持续时间的示例.
编辑:它已移至http://en.cppreference.com/w/cpp/chrono/duration/duration_cast
如果你想要以毫秒为单位的分辨率,你可以这样做:
auto t1 = std::chrono::high_resolution_clock::now();
//process to be timed
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "process took: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
<< " milliseconds\n";
Run Code Online (Sandbox Code Playgroud)
不要忘记在包含的标题中添加:
#include <chrono> //timing
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44419 次 |
最近记录: |