处理C中执行时间的大量分析

处理C中执行时间的大量分析,第1张

概述我目前正在研究涉及大量数据和复杂算法的科学计算项目,因此我需要进行大量的代码分析.我目前依赖< ctime>和clock_t计算代码的执行时间.我对这个解决方案非常满意……除了我基本上计时一切,因此对于每一行实际代码,我必须调用start_time_function123 = clock(),end_time_function123 = clock()和cout<< “function123执行时 我目前正在研究涉及大量数据和复杂算法的科学计算项目,因此我需要进行大量的代码分析.我目前依赖< ctime>和clock_t计算代码的执行时间.我对这个解决方案非常满意……除了我基本上计时一切,因此对于每一行实际代码,我必须调用start_time_function123 = clock(),end_time_function123 = clock()和cout<< “function123执行时间:”<< (end_time_function123-start_time_function123)/ CLOCKS_PER_SEC<< ENDL.这导致繁重的代码膨胀,并迅速使我的代码不可读.你会怎么处理? 我能想到的唯一解决方案是找到一个IDE,允许我标记部分代码(在不同的位置,甚至在不同的文件中),并用一个按钮切换隐藏/显示所有标记的代码.这将允许我隐藏与大多数时间分析相关的代码部分,并且只在我想要的时候显示它.解决方法 具有将代码标记为定时的RAII类型.
struct timed {  char const* name;  clock_t start;  timed( char const* name_to_record):    name(name_to_record),start(clock())  {}  ~timed(){    auto end=clock();    std::cout << name << " execution time: " << (end-start) / CLOCKS_PER_SEC << std::endl;  }};

使用它:

voID foo(){  timed timer(__func__);  // code}

噪音要小得多.

您可以使用基于非范围的完成 *** 作进行扩充.在进行大量分析时,有时我喜欢包含唯一的ID.与endl一起使用cout可能会导致它占主导地位;快速记录到以异步方式转储的大缓冲区可能是最佳的.如果你需要时间ms级别的时间,应该避免分配,锁和字符串 *** 作.

总结

以上是内存溢出为你收集整理的处理C中执行时间的大量分析全部内容,希望文章能够帮你解决处理C中执行时间的大量分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存