我在启动Windows服务时遇到了一些性能问题,第一轮我的lstSps很长(大约130个存储过程)。无论如何要加快速度(除了加速存储过程)?性能问题正在执行存储过程列表
当foreach结束并转到第二轮时,它会更快,因为在TimeToRun()上没有那么多返回true。但是,我关心的是第一次,当有更多的存储过程运行时。
虽然我已经做了一个数组和for循环,因为我读得更快,但我相信问题是因为程序需要很长时间。我可以以更好的方式建立这个吗?也许使用多个线程(每个执行一个)或类似的东西?
真的很感激一些提示:)
编辑:只是为了澄清,它的方法HasResult()正在执行SP:S和让看花时间..
lock (lstSpsToSend)
{
lock (lstSps)
{
foreach (var sp in lstSps.Where(sp => sp .TimeToRun()).Where(sp => sp.HasResult()))
{
lstSpsToSend.Add(sp);
}
}
}
while (lstSpsToSend.Count > 0)
{
//Take the first watchdog in list and then remove it
Sp sp;
lock (lstSpsToSend)
{
sp = lstSpsToSend[0];
lstSpsToSend.RemoveAt(0);
}
try
{
//Send the results
}
catch (Exception e)
{
Thread.Sleep(30000);
}
}
只要你没有分析它,我们不能帮你实现...... –
我想要的帮助不是加速所有存储过程,但找到一个更好的方式来执行它们,所以我不有做1.执行所有存储过程(等到所有完成)2.开始处理结果 – MrProgram