我有 C# 代码在 W2008R2 上的执行时间比在 W7 上的执行时间长 3 倍。
代码非常简单(获取主机名):
Stopwatch sw = new Stopwatch();
sw.Start();
IPHostEntry ip = Dns.Resolve(Dns.GetHostName());
string s = ip.HostName;
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
Console.WriteLine(s);
我确实在 W2008 上停止了一些服务。可能是我不小心停止了某些有助于传播 DNS 通知之类的东西...
有什么想法吗?
编辑:抱歉我还没说。x3 的意思是:在 W7 上需要 <1ms,在 W2008 上需要 2 或 9ms... 这其实与超时无关。
答案1
当您尝试解析该名称(或任何其他名称)时会发生什么外部你的程序,fe使用ping
或nslookup
?
无论操作系统如何,应用程序在两台计算机上的运行效果都应该完全相同,因此这很可能是 DNS 问题。如果计算机的名称未在计算机正在使用的 DNS 服务器中注册,或者计算机无法访问其配置的所有 DNS 服务器,或者服务器无法解析名称,或者(这里还有许多其他可能的问题),查询将失败和/或超时,并且只有然后它将使用本地hosts
文件来解析。
您一定要检查您的 DNS 配置。