加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 高性能网络应用程序的最佳做法

发布时间:2020-12-15 17:50:03 所属栏目:百科 来源:网络整理
导读:在测试我在 Windows 7 Ultimate x64上编写的UDP多播服务器时,我遇到了一个最好奇的事情.在背景音乐播放中,foobar2000显着提升了服务器的传输速率,同时也带来了轻微的丢包.关闭音乐立即将传输速率降低到可接受的水平以下,但也会导致数据包丢失. (我有一个客户
在测试我在 Windows 7 Ultimate x64上编写的UDP多播服务器时,我遇到了一个最好奇的事情.在背景音乐播放中,foobar2000显着提升了服务器的传输速率,同时也带来了轻微的丢包.关闭音乐立即将传输速率降低到可接受的水平以下,但也会导致数据包丢失. (我有一个客户端应用程序与服务器通信并报告未确认的数据包)

我知道Vista的(和)调节行为使媒体和网络应用程序一起播放,但我当然没有想到播放音乐会提高网络性能,也不会使网络性能下降得如此之大.

我可以从我的服务器应用程序的代码角度来做这些事情,以便不管是在Vista还是在Vista上播放音乐,都能始终如一地执行?我一定想避免通知我所有的客户如何调整其注册表以获得可接受的传输速率,并且也希望避免让他们简单地“播放音乐”,以获得可接受的传输速率.这个申请在我看来应该“正常工作”.

我认为这个解决方案涉及到一些遵循流程优先级,MMCSS或者其他一些模糊的Windows API调用,以使它在这里做的Right Thing(TM).

同样,不幸的是,创建一个可重复的测试用例是一项非常小的工作量.只有当物理NIC的驱动程序正在进行工作并且不能使用环回接口进行再现时,才会发生节流行为.需要客户端实现,服务器实现和物理网络硬件进行测试.

解决方法

您观察到的是您的媒体播放器将设备的时钟分辨率设置为1 ms的副作用.

这只发生在戏剧中

副作用是 – 您的应用程序具有较小的时间片,并且这样可以抵御您的应用程序,因为您的应用程序可能会遇到很多CPU被盗用的时间过长.

要测试它,您可以简单地将应用程序内的定时器分辨率设置为1ms,并在没有媒体播放的情况下比较性能.

应该是一样的,如果没有clocres设置,但媒体播放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读