【问题标题】:What is the fastest way to get ipv4 from hostname从主机名获取 ipv4 的最快方法是什么
【发布时间】: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


【解决方案1】:

从 DNS 服务器获取结果所需的时间可能比在您的计算机上执行该功能所需的时间要长得多。如果您需要更高的性能,您可以尝试将您的系统设置为使用具有更快响应时间的不同 DNS 服务器,或者在您自己的网络上安装您自己的 DNS 服务器,这肯定比在 Web 上使用一个更快。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 2012-12-09
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多