उदाहरण 1 (वर ints = नई सूची {1, 2, 3};): एक 31.5% भूमि के ऊपर (Eumerable.ToList) और List.Add प्रदान करता है () 8.7% ओवरहेड का कारण बनता है।
उदाहरण के रूप में 2: List.ctor पर 11.8% ओवरहेड और एनसुर क्षमता के लिए 5% का कारण बनता है।
आपको लगता है कि वर ints = नई सूची देख सकते हैं (लाल गेट चींटियों प्रदर्शन प्रोफाइलर से परिणाम) {1, 2, 3}; अधिक संचालन disassembly
var intsx = new[] {1, 2, 3}.ToList();
0000003f mov edx,3
00000044 mov ecx,60854186h
00000049 call FFF5FD70
0000004e mov dword ptr [ebp-4Ch],eax
00000051 lea ecx,[ebp-50h]
00000054 mov edx,872618h
00000059 call 61490806
0000005e lea eax,[ebp-50h]
00000061 push dword ptr [eax]
00000063 mov ecx,dword ptr [ebp-4Ch]
00000066 call 614908E3
0000006b mov ecx,dword ptr [ebp-4Ch]
0000006e call dword ptr ds:[008726D8h]
00000074 mov dword ptr [ebp-54h],eax
00000077 mov eax,dword ptr [ebp-54h]
0000007a mov dword ptr [ebp-40h],eax
var ints = new List<int> { 1, 2, 3 };
0000007d mov ecx,60B59894h
00000082 call FFF5FBE0
00000087 mov dword ptr [ebp-58h],eax
0000008a mov ecx,dword ptr [ebp-58h]
0000008d call 60805DB0
00000092 mov eax,dword ptr [ebp-58h]
00000095 mov dword ptr [ebp-48h],eax
00000098 mov ecx,dword ptr [ebp-48h]
0000009b mov edx,1
000000a0 cmp dword ptr [ecx],ecx
000000a2 call 608070C0
000000a7 nop
000000a8 mov ecx,dword ptr [ebp-48h]
000000ab mov edx,2
000000b0 cmp dword ptr [ecx],ecx
000000b2 call 608070C0
000000b7 nop
000000b8 mov ecx,dword ptr [ebp-48h]
000000bb mov edx,3
000000c0 cmp dword ptr [ecx],ecx
000000c2 call 608070C0
000000c7 nop
000000c8 mov eax,dword ptr [ebp-48h]
000000cb mov dword ptr [ebp-44h],eax
}
स्रोत
2012-03-30 12:32:29
कारण है कि आप दूसरी पसंद करते हैं मैं भी 2 शैली – Magrangs
पसंद करते हैं अंदाज? मुझे लगता है कि यह कम पठनीय है, खासकर जब 'var' का उपयोग करते समय। –
क्या आपने इस पर कुछ प्रदर्शन परीक्षण करने की कोशिश की है? बस इसे समय दें और उस परीक्षण से अवतार मूल्यों को देखें। – Frederiek