Küçük bir yapıya sahibim ve tek tek üyeleri kopyalamanın yapıyı tek seferde kopyalamaktan çok daha hızlı olduğunu fark ettim. Bunun için iyi bir neden var mı?Bireysel üyeleri tüm yapısından daha hızlı kopyalayın.
Programım:
// Some random structure
private struct PackStats
{
public int nGoodPacks, nBadPacks, nTotalPacks;
}
// ...
PackStats stats1 = new PackStats();
PackStats stats2 = new PackStats();
// Set some random statistics
stats1.nGoodPacks = 55;
stats1.nBadPacks = 3;
stats1.nTotalPacks = (stats1.nGoodPacks + stats1.nBadPacks);
// Now assign stats2 from stats1
// This single line consumes ~190ns...
stats2 = stats1;
// ...but these three lines consume ~100ns (in total)
stats2.nGoodPacks = stats1.nGoodPacks;
stats2.nBadPacks = stats1.nBadPacks;
stats2.nTotalPacks = stats1.nTotalPacks;
nanosaniye aralığında kez ölçmek için, kaç kez atamaları milyonlarca olun:
uint uStart = GetTickCount();
for (int nLoop=0; nLoop<10000000; nLoop++)
{
// Do something...
}
uint uElapsed = (GetTickCount() - uStart);
sonuç etkin ve engelli hem optimizasyonu ile kabaca tutarlı idi .. Bu küçük yapının bireysel üyelerini kopyalamak yaklaşık iki kat daha hızlıydı. Aynı sonuç C/C++ 'da geçerli olur mu?
Burada IL kodunu incelemek hakkında bir yorum yapıldı. Bunu nasıl yapacağınızdan emin değilsiniz ve nasıl yapacağınızı araştıracaksınız. Açıklamak basitse, lütfen yorum yapın. – AlainD
http://stackoverflow.com/q/9025186/11683 – GSerg
64-bit işlemci, anycpu için derlenmiş? –