Socket.Poll 在不同机器上的延迟差异很大

2023-12-26

我继承了一个使用套接字的 .net 2.0 客户端应用程序。服务器在 iSeries 上运行。我的计算机尝试使用客户端应用程序但遇到延迟。在遇到“滞后”的计算机上,我确定 Socket.Poll 方法花费的时间更长。

(我认为)我是这样知道的。

MyApp.WriteLogEntry("CS: START check for readable socket");
start = DateTime.Now;
readable = ControllerSocket.Poll(500, SelectMode.SelectRead);
end = DateTime.Now;
MyApp.WriteLogEntry("CS: END check for readable socket");
elapsed = end.Subtract(start);
MyApp.WriteLogEntry("Elapsed TotalMilliseconds = " + elapsed.TotalMilliseconds.ToString());  

从计算机登录,无延迟

10.04.22.994427|CS: START check for readable socket
10.04.22.997427|CS: END check for readable socket
10.04.22.997427|Elapsed TotalMilliseconds = 1.0001

从有延迟的计算机登录

10.03.30.729816|CS: START check for readable socket
10.03.30.745432|CS: END check for readable socket
10.03.30.745432|Elapsed TotalMilliseconds = 15.6152

两台电脑都是windows 7 64位。一台是磁盘上的新副本(无延迟),另一台计算机是公司映像(延迟)。两台计算机都是千兆以太网。

我已禁用两者上的防火墙,并且它们都运行 Symantec Endpoint 12,配置相同。我已将 SEP 全部删除并得到相同的结果

为什么延迟?注册表设置?忍者小魔怪?

编辑 切换到使用秒表类进行计时

MyApp.WriteLogEntry("CS: START check for readable socket");
stopwatch.Start();
readable = ControllerSocket.Poll(500, SelectMode.SelectRead);
stopwatch.Stop();
MyApp.WriteLogEntry("Elapsed TotalMilliseconds = " + stopwatch.Elapsed.ToString());            
MyApp.WriteLogEntry("CS: END check for readable socket");   

11.27.30.012079|CS: START check for readable socket
11.27.30.013079|Elapsed TotalMilliseconds = 00:00:00.0000696
11.27.30.013079|CS: END check for readable socket

11.28.30.518912|CS: START check for readable socket
11.28.30.534512|Elapsed TotalMilliseconds = 00:00:00.0148936
11.28.30.534512|CS: END check for readable socket

好读:http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/


实际上是“快速”机器出了问题。 Windows 中的计时器具有由时钟中断率决定的分辨率。正确配置的机器每秒滴答 64 次,这使得计时器的精度为 15.625 毫秒。处理器在时钟周期之间的正常状态是断电、停止HLT指令 http://en.wikipedia.org/wiki/HLT。在此期间它当然无法观察到时间的流逝。

您通常可以通过运行来找到导致机器行为异常的程序powercfg.exe /energy来自高级指挥部的报告。这通常可以查明与媒体相关的程序、音频驱动程序或插件通常是罪魁祸首。谷歌的 Chrome 因这样做而臭名昭著,即使在电池供电的设备 http://blog.codinghorror.com/why-does-windows-have-terrible-battery-life/,你可能对电池寿命做的最糟糕的事情。

Socket.Poll() 建议的分辨率当然被大大夸大了,这来自底层select() http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx套接字功能。追溯到 20 世纪 80 年代的 Unix,当套接字被发明时,功耗在当时绝对不是一个问题。

This ought这不是什么问题,毕竟没什么可做的,所以花多长时间应该没关系。一般情况下,您不应该使用该方法,而是依赖于 Socket.BeginSend/Receive() 的异步 I/O,非常高效。如果您寻求快速修复,那么您也可以做坏事并重新编程时钟中断率。你必须pinvoketimeBeginPeriod() 函数 http://pinvoke.net/default.aspx/winmm/timeBeginPeriod.html。请求 1 毫秒。当你不再需要它时,pinvoke timeEndPeriod() 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.Poll 在不同机器上的延迟差异很大 的相关文章

  • 连接到 Facebook 并使用 api

    有没有好的教程如何制作简单的控制台 Facebook 应用程序 连接到 Facebook 并获取朋友列表 用户照片 状态或其他内容 我查看了 facebook SDK 的 facebook 示例 但如果我想在 facebook 上授权 我必
  • 在 VB.NET 中 a = b = 5 - 不可能吗?

    VB NET 中可以这样做吗a b 5 我知道 也是比较运算符 我的意思是做not结果 例如 如果 b 2 a false b 2 然而 在下面的情况下该怎么做呢 不方便在我的代码中引起了这个问题 一些对象a b z由方法中的 ref 传递
  • 在我的网站上显示 Google Analytics(分析)仪表板

    我设置了一个 ASP NET 网站 并使用 Google Analytics 进行页面跟踪 我唯一不喜欢的是我必须离开我的网站 到 Google Analytics 网站 才能看到该报告 有什么方法可以使用他们拥有的所有 AJAX 在我自己
  • C# 创建包含多个文件的 ZIP 存档

    我正在尝试创建包含多个文本文件的 ZIP 存档 如下所示 Dictionary
  • 无法在.net core中使用WCF WSHttpBinding

    我正在尝试将我的项目从 net 移动到 net core 我最初在 net 中使用 WCF WSHttpBinding 服务 但无法在 net core 中使用相同的服务 我尝试使用 BasicHttpBinding 在客户端与 WsHtt
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 检测 SignalR Hub 客户端立即断开连接

    SignalR Hub OnDisconnected 何时在服务器端引发 对于崩溃或关闭而不调用Stop method 我正在使用 SignalR NET 客户端进行测试 而不是 javascript 客户端 如果我打电话给Stop客户端上
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E
  • 将标签文本的一部分设置为粗体

    有什么办法可以使一部分label text要大胆吗 label text asd string 想要string部分要加粗 有可能吗 这怎么办 下面的类说明了如何通过覆盖来做到这一点OnPaint in the LabelWinForms
  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • 如何为从源文件编译的应用程序分配自定义图标?

    在我的程序中 我使用 CSharpCodeProvider 来从源文件编译另一个应用程序 我使用的代码如下 public static bool CompileExecutable String sourceName FileInfo so
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此

随机推荐

  • 使用 ABC 模块时,关键字参数是一个好习惯吗?

    这个问题是后续this one https stackoverflow com a 54694783 10597450 使用时super for 多重继承 https rhettinger wordpress com 2011 05 26
  • cssmin 未正确处理@import

    我在包含 imports 的文件上使用 cssmin cssmin 正确地递归导入本地文件 但对于指向 URL 的导入 导入将保持内联 这使得生成的缩小 CSS 无效 因为 规则必须位于文件的开头 有谁知道这个问题的好的解决方案或解决方法
  • Xcode 问题导航器:两个箭头蓝色图标是什么意思?

    在 Xcode 版本 7 3 1 7D1014 上 在问题导航器中 项目行右侧有一个我无法理解的图标 你知道这是什么意思吗 好吧 这实际上是一个Static Analyzer问题 当项目存在内存管理问题和其他问题时 就会发生这种情况 有关这
  • 提交时的重定向获取后 (PRG) 摘要页面

    因此 我阅读了这种称为 PRG 的方法 作为解决表单双重提交问题的一种方法 但是 我还没有找到向用户显示摘要页面 成功消息的下降实现 我能想到的唯一方法是存储会话变量 但我不希望它在多次刷新时持续存在 它应该显示消息 摘要一次 然后完成 此
  • 用随机字符替换字符串中的每个数字

    我想替换字符串中的每个数字 例如ABC123EFG与另一个随机字符 我的想法是生成一个随机字符串 其中包含所有数字的数量 str并将每个数字替换为 array count of the digit 有没有办法在没有 for 循环的情况下做到
  • 如何获取 3,200 条推文(Twitter API 1.1)

    经过大量的尝试和错误 我终于成功地使用 Twitter 的新 API 版本 1 1 获取推文 我正在使用 PHP TwitterOauth 库 尽管我能够获取推文 但有两件事我不明白 statuses user timeline 的限制是
  • ES5 |何时使用 null 以及何时使用 undefined [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript null 或未定义 https stackoverflow com questions 6429225 javascript null or undefined null是保留字
  • php 卷曲问题

    我正在尝试使用curl 获取远程文件的信息 问题是其他 Web 服务器位于端口 81 上 正如你所看到的 它不起作用 如果在 URI 中指定端口号会发生什么 我的意思是首先删除CURLOPT PO
  • 如何在 keycloak 中设置 CORS 配置以允许 ajax 请求?

    我正在尝试使用 keycloak 作为身份验证服务器 我尝试通过 ajax 请求获取令牌 它在卷曲中效果很好 但由于 CORS 而在我的角度中效果不佳 我已将客户端设置为 直接访问授予启用 为 true 并且已将 添加到 Web Origi
  • 替换特殊字符的问题

    我在从字符串中删除特殊字符时遇到问题 我使用了以下代码 但是没有作用 请建议我更好的逻辑 NSString trimmedReciString NSString stringName NSCharacterSet myCharSet NSC
  • Farbtastic 颜色选择器需要帮助。包含简单的 html 示例

    我已经包含了一个非常简单的 html 示例 几乎可以工作 这是这个出色的颜色选择器的非常简单的实现 但它并不像广告中所说的那样有效 我只得到一个蓝色盒子 我可以选择蓝色色调 但不是渐变或外环 等待 我刚刚意识到外环在那里 我可以用它改变颜色
  • NodeJS 内存消耗统计问题 - 巨大的 RSS 和外部内存使用情况

    在对 Node 项目进行性能测试时 我遇到了一些内存报告 这些报告在性能和内存泄漏方面的解释有点令人困惑 背景 所以我使用生成的报告进程 内存使用 https nodejs org api process html process proc
  • 如何使用 JQuery Wrapper 添加简单的图像超链接

    我不是编码员 我需要一个简单的解决方案来将 html 文档中的超链接添加到 jQuery 图像 以下内容不起作用 所以我想它比以下内容更复杂 div class slider wrapper div class slider ul clas
  • 如何在 Mongo C# 驱动程序中使用自动增量字段而不使用 eval?

    我正在使用所讨论的自动增量字段here https www tutorialspoint com mongodb mongodb autoincrement sequence htm 我可以在 Mongo Console 中执行这个示例 但
  • 是否可以在没有 GUI 的情况下运行 selenium (Firefox) Web 驱动程序?

    我们正在考虑从 Ubuntu 升级我们的生产服务器 desktop10 04 到 Ubuntu server 12 04 我们当前的桌面操作系统上运行着各种服务 例如 Selenium Web Driver 我的问题是 Selenium W
  • 如何在通知中重新打开活动单击我的android

    我正在开发一个应用程序 用户可以在登录活动中登录 登录用户可以在仪表板活动中查看他们的评论 如果服务器中有任何新评论 它会推送通知 一切都运行完美除了一件事 即当用户单击通知时 如果仪表板活动也位于前面 则每次都会打开一个新的仪表板活动 我
  • 如何确定 zurbs Foundation 的 sass 版本中的间距宽度

    应该比较简单 我无法安静地弄清楚 我有这个 parent include grid row main include grid column 8 sidebar include grid column 4 元素 main 和 sidebar
  • 使用哪种 HTTP 方法下载文件?

    在我的网站中 用户可以下载他们的文件 但文件是使用 PHP 生成的 那么我应该使用什么 HTTP 方法来发送作为文件附件的下载请求呢 获取还是发布 GET 用于被动检索文件 POST 用于altering服务器上的信息 这是从客户端来看的
  • ActiveSupport::MessageVerifier::InvalidSignature

    我正在尝试创建一个表单 用户可以在其中编辑现有视频标题和说明 发送 PATCH 请求时 出现以下错误 StackOverflow 上的另一篇文章说 如果发送字符串而不是对象 则会导致错误 但当我控制台记录它时 我看到一个对象 有什么想法吗
  • Socket.Poll 在不同机器上的延迟差异很大

    我继承了一个使用套接字的 net 2 0 客户端应用程序 服务器在 iSeries 上运行 我的计算机尝试使用客户端应用程序但遇到延迟 在遇到 滞后 的计算机上 我确定 Socket Poll 方法花费的时间更长 我认为 我是这样知道的 M