测量网络延迟

PRV*_*RVS 2 c++ performance latency measure

我有一个程序将在两台不同的计算机上运行,​​例如:服务器和客户端。我想测量我的 C++ 和 Java 程序中的网络延迟。我认为测量运行时间的普通命令(例如gettimeofdayC 语言)对于网络上的运行延迟来说不是很准确。一些忠告?

Pav*_*l P 5

您可以使用std::chrono测量准确的时间

#include <chrono>

auto timeStart = std::chrono::high_resolution_clock::now();
// do something... wait for result...
auto timeEnd = std::chrono::high_resolution_clock::now();

long long duration = std::chrono::duration_cast<std::chrono::microseconds>(timeEnd - timeStart).count();
Run Code Online (Sandbox Code Playgroud)

替换microsecondsnanoseconds, milliseconds,seconds以获得不同单位的持续时间。

您也可以使用std::clock,尽管它可能提供不太准确的测量:

#include <ctime>

std::clock_t timeStart = std::clock();
// do something... wait for result...
std::clock_t timeEnd = std::clock();

double durationMs = 1000.0 * (timeEnd-timeStart) / CLOCKS_PER_SEC;
Run Code Online (Sandbox Code Playgroud)