如何改善以下情况的表现?
我有一个应用程序,可以通过网络接受多个连接.应用程序是用C#编写的,并接受Socket连接.每五分钟,应用程序需要执行一个函数调用来更新应用程序并将信息报告回套接字.截断的代码如下
... { new Thread(Loop).Start(); } public Loop() { ... while (true) { ... string line = user.Read(); ... } ... }
上面的代码是Socket连接到服务器时运行的代码.以下代码是每五分钟运行一次的代码.
... { new Thread(TryTick).Start(); } public void TryTick() { while(true) { Tick(); Thread.Sleep(new TimeSpan(0, 5, 0)); } }
Tick()执行一些文件I/O操作以及解析非常有限(小于1MB)的XML数据集.但是,这段代码对我的处理器的影响超出了我的想象.一旦发生嘀嗒声,系统似乎抓住了我的双核开发机器的整个Core并且不放手.这似乎是相当简单的事情,但也许我正在以简单的方式而不是快速的方式.
该系统旨在处理多达100个用户,更多数据,并且在加载期间响应时间小于1秒,因此性能是一个问题.
在确定要执行的操作之前,您确实需要对此代码进行概要分析...如果您无权访问分析器,请添加简单的检测以确定瓶颈的位置.从计时Tick()开始验证它是问题的根源(与程序中的其他地方相反),然后根据需要重复Tick()的子部分.
你真的需要在这里进行剖析和测量...假设你的性能问题所在,可能会浪费你很多时间.