Вопросы по теме 'return-value-optimization'

Доверие к оптимизации возвращаемого значения
Как вы используете оптимизацию возвращаемого значения ? Есть ли случаи, когда я могу доверять современному компилятору для использования оптимизации, или я всегда должен идти безопасным путем и возвращать указатель определенного типа/использовать...
899 просмотров

Вызывает ли оптимизация возвращаемого значения неопределенное поведение?
Читая эту статью в Википедии, один из ответивших указал на следующий вопрос: Конструктор копирования C++, временные объекты и семантика копирования Я наткнулся на эту строку В зависимости от компилятора и настроек компилятора...
389 просмотров
schedule 19.05.2022

Разве оптимизация возвращаемого значения (RVO) не является ошибкой?
Возможно, я задаю глупый вопрос, но я посмотрел страницу википедии для RVO здесь и не смог остановиться интересно, является ли это поведение неправильным. Я попробовал это на своей машине, и RVO полностью включился, несмотря на уровень...
1120 просмотров
schedule 25.02.2022

RVO/NRVO и общедоступный неопределенный конструктор копирования
Я сейчас борюсь со следующим предложением и хочу знать юридические и, в меньшей степени, моральные аргументы против него или за него. Что у нас было: #include <vector> class T; class C { public: C() { } ~C( ) { /*something...
971 просмотров

Работает ли оптимизация возвращаемого значения при назначении другому типу?
Рассмотрим следующие два класса: class Base { Base(const Base& other) {...} // relatively expensive operations here... Base(int i) {...} // ...here, virtual ~Base() {...} // ...and here ... }; class Derived :...
436 просмотров
schedule 24.03.2022

Почему Visual C++ не выполняет оптимизацию возвращаемого значения для самого простого кода?
Разве Visual C++ не выполняет оптимизацию возвращаемого значения? #include <cstdio> struct Foo { ~Foo() { printf("Destructing...\n"); } }; Foo foo() { return Foo(); } int main() { foo(); } Я компилирую и запускаю его: cl /O2...
1453 просмотров

константная ссылка на оптимизацию временного и возвращаемого значения
Мне известно, что присвоение rvalue ссылке const lvalue продлевает время жизни временных объектов до конца области видимости. Однако мне непонятно, когда использовать это, а когда полагаться на оптимизацию возвращаемого значения. LargeObject...
6683 просмотров

Как компилятор определяет, когда RVO безопасен?
Как компилятор определяет, когда RVO безопасен? И нет, я имею в виду не rvalue, а lvalue - если я правильно понимаю, RVO работает, "пересылая" целевой адрес методу, поэтому он возвращается на целевой адрес вместо адреса временного, а затем копирует/...
459 просмотров

Конструктор копирования не вызывается при инициализации объекта с возвращаемым значением функции
Рассмотрим следующий код: #include <iostream> using namespace std; class A { public: int a; A(): a(5) { cout << "Constructor\n"; } A(const A &b) { a =...
782 просмотров

Как в C ++ происходит высвобождение памяти для больших возвращаемых значений (например, строки)?
Скажем, у меня есть функция A () в C ++, и она вызывает другую функцию B (). B () открывает файл и читает длинную строку, а затем возвращает эту строку в A (). Затем A () использует эту строку как входной параметр для C (). C () ожидает ссылку на...
265 просмотров

std::move и оптимизация RVO
Недавно я прочитал, как std::move может ускорить код, просто перемещая значения вместо их копирования. Поэтому я сделал тестовую программу для сравнения скорости с использованием std::vector . Код: #include <iostream> #include...
572 просмотров

Работает ли RVO с элементами объекта?
Рассмотрим следующее: struct A { /* ... */ }; A foo() { auto p = std::make_pair(A{}, 2); // ... do something return p.first; } auto a = foo(); Будет ли p.first копироваться, перемещаться или редактироваться RVO?
1077 просмотров

Оптимизация возвращаемого значения и геттеры const для элементов данных [дубликаты]
Я понимаю, что RVO позволяет копировать, среди прочего, временные и локальные переменные, но как насчет элементов данных? Чтобы сфокусироваться на вопросе, какой из следующих трех вариантов является лучшим способом написать получатель констант для...
73 просмотров
schedule 21.05.2022

В чем магия оптимизации возвращаемой стоимости?
В основном я делаю следующее. В моем классе D есть три конструктора (по умолчанию, перемещение, копирование) и два перегруженных оператора присваивания (перемещение и копирование). Я ожидал, что любое создание объекта типа D вызовет хотя бы один из...
105 просмотров