Biorąc pod uwagę następujący kod:Czy optymalizatorzy przenoszą tymczasowe typy inne niż POD z pętli?
while(is_running)
{
std::vector<buffer> buffers;
// fill buffers
// use buffers
}
Czy współczesne kompilatory wykonać następującą transformację?
std::vector<bufer> buffers;
while(is_running)
{
// fill buffers
// use buffers
buffers.clear();
}
Dlaczego uważasz, że drugi byłby bardziej wydajny? Czy profilowałeś? –
@LuchianGrigore Jedynym powodem, dla którego mogę myśleć jest to, że pierwsza wersja musi mieć przydzielanie/de-alokacja na cykl pętli, a druga nie musi tak być. – juanchopanza
@juanchopanza: Prawidłowo, drugi nie będzie nieprzypadkowo przydzielać/zwalniać podczas każdej iteracji pętli. – ronag