加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 性能断言

发布时间:2020-12-16 07:20:26 所属栏目:百科 来源:网络整理
导读:我知道C使用assert()支持函数断言.是否有任何方式/库支持C/C++中的性能断言?有其他语言吗? 以下内容: perf_assert_begin(ID1)....../* assert the time taken is less than 2000 ms */perf_assert_end(ID1,interval(ID1) 2000) 解决方法 可以使用 cassert
我知道C使用assert()支持函数断言.是否有任何方式/库支持C/C++中的性能断言?有其他语言吗?

以下内容:

perf_assert_begin(ID1)
...
...
/* assert the time taken is less than 2000 ms */
perf_assert_end(ID1,interval(ID1) < 2000)

解决方法

可以使用< cassert>中的assert来完成断言.或static_assert,它内置于语言中.
那么,为什么不手动花时间检查断言语句中的时差呢?

#include <cassert>
#include <chrono>

#ifndef NDEBUG
auto start = std::chrono::high_resolution_clock::now();
#endif
...
#ifndef NDEBUG
assert(std::chrono::duration_cast<milliseconds>(
    std::chrono::high_resolution_clock::now() - start).count() < 2000
);
#endif

如果定义了NDEBUG,预处理程序指令只允许代码传递给编译器.如果定义了NDEBUG,则assert仅执行操作,而没有其他的则不能正常工作.

为了防止在使用起始标识符定义NDEBUG时发生名称冲突,您可以使用__COUNTER__执行一些GCC-magic以使标识符唯一(特定于编译器)或将整个内容移动到单独的范围中.这对你来说可能不是问题,但是如果从某个角度看你的程序,有些人可能会对条件定义的变量感到惊讶.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读