Mam małą strukturę i odkryłem, że kopiowanie poszczególnych elementów jest znacznie szybsze niż kopiowanie struktury za jednym razem. Czy istnieje ku temu dobry powód?Skopiuj pojedyncze elementy szybciej niż cała struktura?
Mój program:
// 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;
Do pomiaru czasu w zakresie nanosekund, robię przypisania miliony razy:
uint uStart = GetTickCount();
for (int nLoop=0; nLoop<10000000; nLoop++)
{
// Do something...
}
uint uElapsed = (GetTickCount() - uStart);
Wyniki były mniej więcej zgodne zarówno z włączoną optymalizacją i niepełnosprawnych .. Kopiowanie poszczególnych członków tej małej struktury było około dwa razy szybsze. Czy ten sam wynik miałby zastosowanie w C/C++?
Tutaj był komentarz na temat sprawdzania kodu IL. Nie jestem pewien, jak to zrobić i będę badać, jak to zrobić. Jeśli jest to łatwe do wyjaśnienia, proszę odpowiedzieć komentarzem. – AlainD
http://stackoverflow.com/q/9025186/11683 – GSerg
64-bitowy procesor, skompilowany dla anycpu? –