讓我們比較兩段代碼:使用null初始化局部變量是否會影響性能?
String str = null;
//Possibly do something...
str = "Test";
Console.WriteLine(str);
和
String str;
//Possibly do something...
str = "Test";
Console.WriteLine(str);
我總是在想,這些代碼段是相等的。但經過我有構建這些代碼(Release模式與優化檢查)和IL比較方法產生我注意到,有第一個樣品在兩個IL指令:
1示例代碼IL:
.maxstack 1
.locals的init([0]字符串str)
IL_0000:ldnull
IL_0001:stloc.0
IL_0002:ldstr 「測試」
IL_0007:stloc.0
IL_0008:ldloc.0
IL_0009:呼叫空隙[mscorlib程序] System.Console:的WriteLine(字符串)
IL_000e:滯留
第二示例代碼IL:
.maxstack 1
.locals的init([0]字符串str )
IL_0000:ldstr 「測試」
IL_0005:stloc.0
IL_0006:ldloc.0
IL_0007:CALL空隙[mscorlib程序] System.Console:的WriteLine(字符串)
IL_000c:滯留
可能這個代碼是由JIT compiller優化的? 因此,初始化本地方法變量null影響性能(我知道這是非常簡單的操作,但任何情況),我們應該避免它? 預先感謝。
它通常被認爲是不好的形式來初始化一個永遠不會被使用的值,只是因爲它增加了混淆(有一個'null'被賦值,這對邏輯沒有任何意義。)任何關聯的性能命中都可以忽略不計;前一個原因是避免它的一個更有說服力的理由。 – 2011-01-20 19:31:54