1. 程式人生 > 其它 >c# DynamicInvoke 和 Invoke執行比較

c# DynamicInvoke 和 Invoke執行比較

技術標籤:經典摘抄

class Program
{
      static void Main(string[] args)
      {
          Func<int,int> twice = x => x * 2;
          const int LOOP = 5000000; // 5M
          
          var watch = Stopwatch.StartNew();
          for (int i = 0; i < LOOP; i++)
          {
              twice.Invoke(
3); } watch.Stop(); Console.WriteLine("Invoke: {0}ms", watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < LOOP; i++) { twice.DynamicInvoke(3); } watch.Stop()
; Console.WriteLine("DynamicInvoke: {0}ms", watch.ElapsedMilliseconds); } }

在我的電腦上:
在這裡插入圖片描述
上面程式碼的執行時間:

Invoke: 24ms
DynamicInvoke: 2214ms

當然,我同時也在工作,所以會有些影響。

除了時間的開銷比較外,記憶體消耗也是一個問題。
在這裡插入圖片描述

[1] difference-between-invoke-and-dynamicinvoke