Возвращает ли элементы медленнее, чем отправляет их по ссылке и изменяет там?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Возвращает ли элементы медленнее, чем отправляет их по ссылке и изменяет там?

Сообщение Anonymous »

Предположим, у меня есть функция, которая создает большую структуру (в данном случае огромный std::vector), и цикл, который вызывает ее повторно:

Код: Выделить всё

std::vector render(int w, int h, int time){
std::vector result;
/* heavyweight drawing procedures */
return result;
};

while(loop){
std::vector image = render(800,600,time);
/*send image to graphics card*/
/*...*/
};
Мой вопрос: в подобных случаях достаточно ли GCC/Clang умен, чтобы избежать выделения памяти для этого огромного массива 800x600x4 на каждой итерации? Другими словами, работает ли этот код так:

Код: Выделить всё

void render(int w, int h, int time, std::vector& image){ /*...*/ }
std::vector image;
while(loop){
render(800,600,time,image);
/*...*/
}
Почему вопрос: я делаю компилятор с языка на C++, и мне нужно решить, каким путем мне идти; если я скомпилирую его, как первый пример или как последний. Первый из них был бы тривиален; для последнего потребуется сложное программирование, но оно того стоит, если оно будет значительно быстрее.

Подробнее здесь: https://stackoverflow.com/questions/201 ... ying-there
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»