我在啓動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