我有幾個執行自定義計算的計算器類。從歷史上看,這些類的方法已經通過BackgroundWorker啓動,因爲它們冗長,運行時間明智。爲什麼在線程池(通過Task.Run)上啓動的代碼比在BackgroundWorker中運行的代碼慢?
最近我正在將應用程序轉換爲在C#中使用新的異步支持,現在通過Task.Run()運行相同的方法,但我注意到它們運行速度慢了大約5-7%(這是在我的應用程序大不了)。
有一個明顯/預期的原因,爲什麼一個線程池線程比BackgroundWorker做的慢?
我沒有對計算邏輯做任何修改;我只是將計算方法傳遞給Task.Run()(並等待它),然後將其提供給BackgroundWorker,所以我相當肯定我自己沒有引入任何更改,以減少速度。
請張貼代碼。可能是任何事情。 – usr