最佳C 11测量嵌入式系统代码执行时间的方法
Best C++11 way to measure code execution time for an Embedded system
我试图找到一种方法来测量代码执行 time 没有使用以下列出的约束。
根据我的要求,它是一个具有非常严格符合性的嵌入式系统。
我只能发现使用C标题,Google C 编码标准的未批准标题或不包括项目符合的Boost。
我浏览了建议的帖子,这些帖子看起来相似,但找不到想要的答案。请帮助!
约束不使用以下内容,
- Boost Libraries
-
C系统标头,例如
sys/time.h
-
Google C 样式指南的未经批准的标头(例如
chrono
) -
目标平台是Linux
此样式检查器已将Chrono列出为未批准的。https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py
如果我们在谈论C 11-唯一的方法是使用std::chrono
。Google Style指南在这里不是某种最终权限(有时是值得怀疑的)。
std::chrono
被证明是良好而稳定的,甚至在AAA游戏中的游戏引擎中使用,请在此处亲自查看。确切需要的好示例
如果您仍然不想要它,则没有其他C 11的方法,但是您可能想看C型尺寸,例如这里。
仅供您的信息 - 所有方法都使用系统API,因此包括<time.h>
,无法避免它。
对于嵌入式系统,有一种常见的做法可以在代码中更改GPIO状态,然后将示波器挂钩到PIN上并寻找产生的波形。这对运行时的影响很小,因为更改GPIO是一个廉价的操作。它不需要任何库和其他代码。但这需要其他硬件。
注意:嵌入是相当可拉伸的概念。GPIO技巧与微控制器更相关。
最终产品中需要时间测量吗?如果不是,我建议使用您喜欢的任何东西,并使用开关不将这些测量例程编译到最终产品中。
您的意思是吗?(对于Windows平台)
#include <Windows.h>
class stopwatch
{
double PCFreq = 0.0;
double CounterStart = 0; //google style compliant, less accurate
//__int64 CounterStart = 0; //for accuracy
LARGE_INTEGER li;
public:
void StartCounter()
{
if (!QueryPerformanceFrequency(&li))ExitProcess(0);
PCFreq = double(li.QuadPart) / 1000.0;
QueryPerformanceCounter(&li); CounterStart = li.QuadPart;
}
double GetCounter() { QueryPerformanceCounter(&li); return double(li.QuadPart - CounterStart) / PCFreq; }
};
用法:
stopwatch aclock;
aclock.StartCounter(); //start
//....///
cout<<aclock.GetcCounter()<<endl; //output time passed in milliseconds
- 需要减少我的C++代码的执行时间
- 视觉在C 中获取每行代码的执行时间
- 测量执行时间 - 在程序代码或外壳中
- 第一次在 Linux 上执行 c++ 代码的时间非常慢
- 最佳C 11测量嵌入式系统代码执行时间的方法
- 两个代码段之间执行时间的奇怪差异
- 预先设置c++代码的执行时间
- 为什么要在我的OpenMP代码中增加执行时间
- 如何减少以下代码的执行时间
- 执行代码的时间百分比为x
- 2个代码的执行时间的数目将不同
- 在 OpenMP 代码C++测量执行时间
- 如何减少以下代码的C++执行时间
- 当我从Java代码执行C++程序时,我应该如何测量它的执行时间
- C++和Haskell代码在不同机器上的执行时间不同
- 有什么方法可以减少这个代码的执行时间吗
- 英特尔TBB代码有不同的执行时间在windows和linux
- 如何获得一个c++代码段执行时间的客观评价
- 如何在c++中获得一段代码的执行时间
- Linux中的代码执行时间