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以使标识符唯一(特定于编译器)或将整个内容移动到单独的范围中.这对你来说可能不是问题,但是如果从某个角度看你的程序,有些人可能会对条件定义的变量感到惊讶. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |