计时器类
为了测量延迟,我们需要使用计时功能,为此我们把相关的功能封装进计时器类内,简化使用
这段代码位于logger.hpp
中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class ScopedTimer { public: ScopedTimer(const std::string&name) :_name(name),_start(std::chrono::high_resolution_clock::now()) { _prev = _start; }
int64_t staged() { auto stage = std::chrono::high_resolution_clock::now(); auto ret = stage - _prev; _prev = stage; return (std::chrono::duration_cast<std::chrono::microseconds>(ret)).count(); } ~ScopedTimer() { auto end = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end-_start); LOG_DEBUG("计时器 {} 存活时间: {} μs",_name,duration.count()); }
private: std::string _name; std::chrono::time_point<std::chrono::high_resolution_clock> _start; std::chrono::time_point<std::chrono::high_resolution_clock> _prev; }; }
|
检查无缓存时的延迟分布
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [default-logger][08:41:39][8][info ][HTTPServer.cpp:75] 收到HTTP请求, method=GET,path=/flush/redis [default-logger][08:41:50][9][debug ][HTTPServer.cpp:68] 收到HTTP请求, method=GET,path=/ping /ping [default-logger][08:41:55][10][debug ][HTTPServer.cpp:888] 收到HTTP请求, method=POST,path=/debug/merchant/dish/info [default-logger][08:41:55][10][trace ][HTTPServer.cpp:899] Json解析完成, 耗时 1168μs [default-logger][08:41:55][10][trace ][HTTPServer.cpp:914] 完成Redis的get查询, 耗时 1068μs [default-logger][08:41:55][10][trace ][DatabaseClient.cpp:355] API数据库接口加锁耗时: 0μs [default-logger][08:41:55][10][debug ][DatabaseClient.cpp:356] 数据库查询菜品, ID:D561d2f6d155a [default-logger][08:41:56][10][trace ][DatabaseClient.cpp:362] API生成SQL语句,耗时 29678μs [default-logger][08:41:56][10][trace ][DatabaseClient.cpp:364] API执行SQL语句,耗时 10400μs [default-logger][08:41:56][10][debug ][logger.hpp:40] 计时器 数据库接口内部 存活时间: 40230 μs [default-logger][08:41:56][10][trace ][HTTPServer.cpp:920] 完成数据库查询数据,耗时 40254μs [default-logger][08:41:56][10][trace ][HTTPServer.cpp:926] 完成Redis设置缓存,耗时 561μs [default-logger][08:41:56][10][trace ][HTTPServer.cpp:931] 完成Json序列化和报文写入,耗时 1007μs [default-logger][08:41:56][10][info ][HTTPServer.cpp:933] [商家查询菜品详情]成功 [default-logger][08:41:56][10][debug ][logger.hpp:40] 计时器 菜品详情查询 存活时间: 44240 μs
|
1 2 3 4 5 6
| [default-logger][08:57:52][10][debug ][HTTPServer.cpp:888] 收到HTTP请求, method=POST,path=/debug/merchant/dish/info [default-logger][08:57:52][10][trace ][HTTPServer.cpp:899] Json解析完成, 耗时 83μs [default-logger][08:57:52][10][trace ][HTTPServer.cpp:914] 完成Redis的get查询, 耗时 2819μs [default-logger][08:57:52][10][trace ][HTTPServer.cpp:931] 完成Json序列化和报文写入,耗时 143μs [default-logger][08:57:52][10][info ][HTTPServer.cpp:933] [商家查询菜品详情]成功 [default-logger][08:57:52][10][debug ][logger.hpp:40] 计时器 菜品详情查询 存活时间: 3149 μs
|