Cześć, czy pętla do while może z jakiś względów być mniej wydajna od while lub for zakładając, że ma się wykonać taką samą ilość razy?
No jasne, pod warunkiem, że w do-while będziesz miał dłużej wykonujący się kod ;]
Serio, nie znalazłeś sobie lepszego miejsca na ultra-mikro optymalizacje?
Sprwadźmy: https://godbolt.org/g/1fWYrc
Nie widzę nic, co mogło by wpłynąć na wydajność.
Całkowicie zgadzam się z @spartanPAGE, z drugiej strony jeśli nurtują Cię tego typu rzeczy, to możesz sobie to po prostu sprawdzić np. na stronie https://gcc.godbolt.org/ poprzez porównanie wynikowego kodu obu wersji implementacji.
Edit: Spóźniłam się;)
Generalnie te trzy pętle są trochę inne semantycznie. For i while są praktycznie równoważne (z dokładnością do zasięgu zmiennych), a do-while ma inną semantykę niż while, więc zarówno emulowanie do-while za pomocą while, jak i vice-versa nie mają sensu, bo musisz dorabiać sprawdzanie flag (lub inne obejścia) zamiast po prostu programować jak człowiek.
Przykłady podane przez @kq są w rzeczywistości różne, nie ma tam emulacji while za pomocą do-while (ani vice-versa).
Raczej nie ma większych różnic w ASM, ale czasami można uniknąć jednego sprawdzenia jeśli wybierzesz dobrze między "do while" i "while".
Dodatkowo możesz zawalczyć używając odpowiedniego operatora, np:
int n = 10;
while (n --> 0) {
cout << n << "\n";
}
Stary "for" to w zasadzie bardziej strukturalny while.
Nowy "for-each" to już zupełnie co innego.