测量网络延迟

Measuring latency over network

我有一个程序可以 运行 在两台不同的计算机上运行,​​例如:服务器和客户端。我想在我的 C++ 和 Java 程序中测量网络延迟。我认为测量 运行 时间的正常命令(例如 C 中的 gettimeofday)对于网络上的 运行 延迟不是很准确。有什么建议吗?

您可以使用 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();

microseconds 替换为 nanosecondsmillisecondsseconds 以获得不同单位的持续时间。

您也可以使用 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;