【发布时间】:2022-11-25 19:25:30
【问题描述】:
我知道我的问题有点奇怪,但我没有找到答案。
就性能而言,从主机名检索 ipv4 而不是 ipv6 的函数最快
gethostbyname()
或者
gethostbyname_r()
或者
getaddrinfo()
我有一个关于 gethostbyname 的小问题,哪个最好将 h_addr 复制到 sockaddr_in
memcpy 或 bcopy 或类似的
addr.sin_addr.s_addr = *(unsigned long *) remoteHost->h_addr_list[0];
当涉及到性能和线程安全时(将来不会出现任何崩溃/问题)
gethostbyname_r()
或者
getaddrinfo()
谢谢。
我搜索并用谷歌搜索并做了一些基准测试,但我没有得到明确的答案,我需要一个在 c 方面有良好经验的专家告诉我他作为专家认为什么更好
【问题讨论】:
-
无论您使用哪个功能,都差不多。如果主机名未在本地缓存,则将进行 DNS 查找,这将使函数之间的任何其他差异变得非常小,以至于它们基本上无法测量。
-
只需测试不同的 DNS 服务器并将您的系统配置为使用最快的服务器+上面的评论。从代码的角度来看没有什么可以优化的,因为这里的 IO 操作是时间关键部分。
标签: c++ c multithreading performance performance-testing