【发布时间】:2011-07-18 15:13:08
【问题描述】:
再次问一个 boost 问题:我需要在我的 boost 线程中计算函数花费的时间:这里是代码:
boost::posix_time::microseconds tes( 12 );
int i = 0;
while( true )
{
boost::posix_time::ptime start = boost::posix_time::microsec_clock::local_time( );
myFunction( );
boost::this_thread::sleep( tes );
boost::posix_time::ptime end = boost::posix_time::microsec_clock::local_time( );
boost::posix_time::time_duration elapsed = end - start;
}
所以我尝试了很多次,但经过的 time_duration 始终为 0,我添加了测试 12 微秒的睡眠功能,所以最好的方法是我将经过 12 微秒但仍然为 0.. 我需要告诉线程在读取时间后更新计时器吗??
谢谢
【问题讨论】:
-
几个问题:(1)你在什么系统上运行这个? boost 文档说,在 Windows 系统上,您可能无法获得微秒级分辨率。 (2) 你有没有尝试过更多的时间? (3) 你在哪里打印经过的时间?
-
我在 windows xp 32 和 windows 7 64 下使用.. 所以在 windows 中只有几毫秒?
-
我自己不做 Windows 编程,所以我不确定,但文档似乎让它听起来好像不能保证它可以达到微秒级的精度。快速搜索似乎表明 Windows 计时器在微秒级别上不是很可靠。如果您可以访问 posix 机器,我可能会尝试这样做。另外,您使用的是哪个版本的 Boost?
-
试试 boost::timer。它是为这种事情设计的。
标签: c++ windows boost functional-testing duration