c# DynamicInvoke 和 Invoke執行比較
阿新 • • 發佈:2020-12-12
技術標籤:經典摘抄
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
當然,我同時也在工作,所以會有些影響。
除了時間的開銷比較外,記憶體消耗也是一個問題。