Type casting impact over execution performance in C#
http://tinyurl.com/clr68dj
這是篇 2004 年的文章, 也就是 .NET Framework 1.1 時代,
作者的程式以及測試數據, 顯示 as 比起 cast 要來得快.
但, 我們也可以看到文章下方的留言, 2006 年有人指出在 .NET 2.0 上,
可能因為微軟實作及最佳化不同, 所以 cast 又比 as 快.
而後續也有數個留言提到這篇文章的結論有誤.
那在 .NET Framework 到了 4.6 的 2015 年, 又是什麼狀況呢?
測試平台: Windows 10 TH2 x64, Visual Studio 2015
先說總結: as 快於 cast . (*1)
方式 時間
as 3,231ms
down as 3,244ms
as + object 3,251ms
down as + object 3,229ms
cast 3,246ms
down cast 4,341ms
cast + object 6,485ms
down cast + object 4,310ms
測試用的 method, 只列出兩個例子:
static void MethodCastObject(object c)
{
for (int i = 0; i < int.MaxValue; i++)
{
Parent p = (Parent)c;
p.DoSomething();
}
}
static void MethodAsDown(Parent p)
{
for (int i = 0; i < int.MaxValue; i++)
{
Child c = p as Child;
c.DoSomething();
}
}
*1, 但若要說 cast 快於 as, 也並不是完全不對. 理由是: ......