测量网络延迟
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
替换为 nanoseconds
、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;
我有一个程序可以 运行 在两台不同的计算机上运行,例如:服务器和客户端。我想在我的 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
替换为 nanoseconds
、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;