考慮下面的代碼:優化器是否將臨時非POD類型移出循環?
while(is_running)
{
std::vector<buffer> buffers;
// fill buffers
// use buffers
}
是否現代編譯器執行以下轉型?
std::vector<bufer> buffers;
while(is_running)
{
// fill buffers
// use buffers
buffers.clear();
}
爲什麼你認爲第二個會更高效?你有個人資料嗎? –
@LuchianGrigore我能想到的唯一原因是第一個版本必須在每個循環中分配/解除分配,第二個版本不一定如此。 – juanchopanza
@juanchopanza:正確的,第二個不會在每次循環迭代過程中不必要地分配/釋放。 – ronag