我有一個WebAPI函數執行循環計算來查找單個數值。優化長時間運行的WebAPI方法
從我的客戶端JavaScript,我做了大約20個併發請求到這個函數爲單頁面加載。我已經通過Chrome的網絡性能工具確認所有請求都是在同一時間完成的,但請求會按順序接收響應(最初的請求需要2秒鐘,後面的需要8秒鐘),因此服務器似乎是瓶頸。
我已經嘗試優化我的代碼,通過使其異步,雖然我不知道我做的是否正確或它提高了性能。
[HttpGet]
public async Task<double> CalcResult(double First, double Second)
{
var result = await Task.Run(()=>LoopCalculationFunction(First,Second));
return result * 100;
}
這樣做是否正確,有什麼辦法可以進一步優化這個功能嗎?
因此,在'async-await'實現之後,您是否看到客戶端性能提升?進一步優化,如果需要的話,我想應該是修復'LoopCalculationFunction'中的複雜性? –
您可能會遇到Chrome的連接限制:http://superuser.com/questions/499114/how-to-increase-chromes-connections-per-server –
此外,這是「Task.Run」的不當使用。它什麼都不做,實際上是有害的。請參閱http://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-dont-use.html –