Dzień dobry,Wydajność łamanie oprócz jednej pętli na dwie pętle
Załóżmy, że masz prosty dla pętli jak poniżej ...
for(int i=0;i<10;i++)
{
//statement 1
//statement 2
}
Załóżmy, że oświadczenie 1 i 2 były oświadczenie O (1). Poza niewielkim narzutem "rozpoczęcia" kolejnej pętli, podziałałby na to, że pętla na dwie (nie zagnieżdżone, ale sekwencyjne) pętle będzie równie szybka? Na przykład ...
for(int i=0;i<10;i++)
{
//statement 1
}
for(int i=0;i<10;i++)
{
//statement 2
}
Dlaczego zadaje takie głupie pytanie jest, że mam system wykrywania kolizji (CDS), który ma pętli wszystkich obiektów. Chcę „dzielą” funkcjonalność mojego systemu CDS więc mogę po prostu zadzwonić
cds.update(objectlist);
zamiast złamać mój system CD w górę. (Nie martwcie się zbytnio o moją implementację CDS ... Myślę, że wiem, co robię, po prostu nie wiem jak to wyjaśnić, to, co naprawdę muszę wiedzieć, to czy wykonuję potężne uderzenie wydajności dla pętli na wszystkich swoich obiektach ponownie.
Jak stefaanv zauważyć, koszt zapętlenie przez wszystkich przedmiotów po raz drugi jest nieokreślony z informacjami dałeś. – patrickn
Chciałbym również zauważyć, że dwie struktury kontroli, które wysłałeś, rozwiązują różne problemy, a zatem nie są łatwo porównywane w kontekście wydajności. – patrickn
Bez znajomości większej ilości szczegółów i bez faktycznego pomiaru nie można powiedzieć, która wersja jest szybsza. Buforowanie, zarówno dane i instrukcje, jak i przewidywania rozgałęzień (i tabele) oraz spekulacyjne wykonanie, zwiększają złożoność dzisiejszej optymalizacji. Dobra uwaga przy przedwczesnej optymalizacji. Zmierz najpierw w rzeczywistym świecie, a następnie zoptymalizuj. –