我創建一個asp.net的WebAPI測試應用程序,這是我的測試代碼:爲什麼這麼慢,.NET任務巢子任務
當我使用result = index.ToString() + this.getresult().Result;
,響應時間爲2s。如果我使用Thread.Sleep(100); result = index.ToString();
,它只需要200ms。
public class HomeController : Controller
{
public string Test()
{
var listName = new List<int>();
for (int i = 0; i < 100; i++)
{
listName.Add(i);
}
var response = Task.WhenAll(listName.Select(sendrequest)).Result;
return string.Join(",", response);
}
public async Task<string> sendrequest(int index)
{
return await Task.Factory.StartNew(() =>
{
string result = string.Empty;
try
{
Thread.Sleep(100); result = index.ToString();
//result = index.ToString() + this.getresult().Result;
}
catch (Exception ex)
{
System.IO.File.AppendAllText("D:\\WebService\\FelixTest\\log.txt",ex.ToString());
}
return result;
}).ConfigureAwait(false);
}
public async Task<string> getresult()
{
await Task.Delay(100);
return "OK";
}
}
可能是因爲您在getresult方法中使用延遲? – ThunD3eR
你是如何測量時間的?在你的'延遲'只有100(毫秒,默認情況下),所以它不應該需要2秒...但它可能取決於你如何測量運行應用程序所需的時間。 – Shaamaan