googletest测试代码执行时间接口
时间: 2023-10-02 11:08:22 浏览: 51
googletest 提供了一个 `TimeInMillis` 函数,可以获取当前时间的毫秒数,可以用于测试代码执行时间。具体的接口如下:
```cpp
// 返回当前时间的毫秒数
inline TimeInMillis GetTimeInMillis() {
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || GTEST_OS_WINDOWS_MINGW || GTEST_OS_WINDOWS_CYGWIN
// Windows CE and Windows Phone don't support GetTickCount64.
return static_cast<TimeInMillis>(GetTickCount());
#else
# if defined(_MSC_VER) && _MSC_VER < 1900
// MSVC 14.0 (2015) provides std::chrono but not std::chrono::steady_clock
return static_cast<TimeInMillis>(
std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now().time_since_epoch()).count());
# else
return static_cast<TimeInMillis>(
std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::steady_clock::now().time_since_epoch()).count());
# endif // _MSC_VER < 1900
#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || GTEST_OS_WINDOWS_MINGW || GTEST_OS_WINDOWS_CYGWIN
}
```
使用示例:
```cpp
TEST(MyTest, MyTestCase) {
const int kLoopCount = 1000000;
const int kExpectedTime = 100; // 期望执行时间 100ms
const auto start_time = GetTimeInMillis();
for (int i = 0; i < kLoopCount; i++) {
// 执行测试代码
}
const auto elapsed_time = GetTimeInMillis() - start_time;
EXPECT_LE(elapsed_time, kExpectedTime);
}
```
这样就可以在测试代码执行时间是否在预期范围内。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)