我有用C++编写的大项目.它可能有一些稳定性问题(即随机运行时),但我不确定.据我所知,由于OS多任务处理,执行时间(由挂钟时间测量)在运行之间可能会有所不同.但我不知道,稳定程序是否正常,在具有相同输入的运行中具有由cpu时间时间测量的不同执行时间.我尝试使用clock()
time.h,和
boost::chrono:::process_user_cpu_clock::now();
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,我都会在图表上看到尖峰.我将举例说明这些图表.这里Y轴 - 执行时间,X轴 - 相同程序的连续运行,在相同的输入数据上.红色图表 - 挂钟时间,红色 - cpu时钟时间,由time.h采取从time.h
当然我们假设我们的程序是稳定的,并且没有任何随机行为.那么,有可能吗?平台是Windows 7.
当然我们假设我们的程序是稳定的,并且没有任何随机行为.那么,有可能吗?
如果你的程序是在桌面上运行的,那么这种可变性是典型的,我认为这是不可避免的.中断,I/O通道活动和以太网本身消耗cpu时间,通常具有惊人的大"时间块"(参见tcp/ip SAR,缓存未命中等),其中大部分超出了程序的控制范围,而不是-synch与你的时间努力.
我只看到了一个以"稳定"方式运行的软件示例.那台计算机是一台SBC(单板计算机),有1个cpu(不是Intel或AMD),都是静态ram(所以没有动态ram,没有刷新活动),没有以太网,但有两个固定速率的i/o通道,它在缩小的操作系统上运行了一个程序(不是linux,而不是桌面操作系统)......精度就像行为简单的逻辑一样.
作为团队领导,我认识到了这种不寻常,所以我问她是否有时间附加逻辑分析仪和示波器......她证明了这两种工具都没有显示出任何时间差异,边缘到边缘,信息消息.对我来说,她的软件逻辑令人印象深刻.在该系统中,如果您不需要中断,则只是没有启用它.
桌面是一个非常不同的野兽...许多事情同时发生,其中大部分都不能被扼杀.
是.桌面具有您所看到的各种差异(在时间上),这不仅是可能的,而且是不可避免的.
然而,有可能实现您所暗示的稳定性,而不是在桌面上.它需要特殊的硬件和仔细的编码.
归档时间: |
|
查看次数: |
305 次 |
最近记录: |