c++中的执行时间和检查流状态
Execution time and checking stream state in c++
我正在努力理解C++中的流。我有下面的代码,我在其中多次打印消息,并试图在检查状态是否良好时发现执行时间是否存在差异。当然,我用了时间,但我找不到确切的答案,因为有时检查会更快,有时不是。我的直觉是,由于检查是一项额外的操作,它应该总是需要(稍微(更长的时间。有什么实际的差异吗?还是只是随机的?
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
ostream &out = cout; //initialize ostream object
size_t arg = stoul(argv[1]); //convert char to size_t
for (size_t cnt = 0; cnt != arg; ++cnt)
{
// if (out.good()) //check goodbit
out << "Nr. of command line argument " << argc << 'n';
}
}
问题的真正答案是,在实践中很难衡量差异。这只是一个比较(if(与放弃执行操作系统进行I/O和与硬件通信的比较。
当涉及到打印时,有多层抽象,从缓冲到分支预测。实际影响取决于多种因素。即使是完全相同程序的多次运行也会显示出执行时间的变化。
你需要设计一个仔细而聪明的实验来可靠地测量检查的效果。
这里的问题是,最确定的是,差异低于您的测试精度,可能低于执行噪音。除此之外,CPU架构实际上可以消除差异,关键字是:预取、分支预测和(in(著名的推测执行。
相关文章:
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- c++中的执行时间和检查流状态
- 验证(使用 static_assert)元组类型是否遵循某种顺序(有状态编译时检查)
- 为什么 OpenService() 在我检查窗口服务状态时不起作用?
- 如何在 uwp c# 中循环遍历和检查 Xbox 控制器状态
- 检查Windows激活状态返回错误的值
- 提升::MSM 检查保护条件下的状态转换
- 检查特定应用程序的窗口是否处于最小化状态
- 如何在C API中检查MySql连接是否处于活动状态
- C++检查结构中的所有状态位
- 在QT中检查无线状态
- 在 OpenGL 计划链路状态检查期间"No definition of main in vertex shader"
- 如何实现更快的状态检查功能?蟒
- 使用 Indy 合成检查网络中的远程主机状态
- qt定期检查QProcess状态
- C++ 检查子状态
- 是否有一种直观的方式检查标志和状态
- Qt5 C++如何访问模型中的项目以检查状态
- Qt -如何禁用QCheckBox,同时保留检查状态
- 捕捉QTableWidgetItem检查状态变化