Вопросы по теме 'return-value-optimization'
Доверие к оптимизации возвращаемого значения
Как вы используете оптимизацию возвращаемого значения ? Есть ли случаи, когда я могу доверять современному компилятору для использования оптимизации, или я всегда должен идти безопасным путем и возвращать указатель определенного типа/использовать...
899 просмотров
schedule
29.10.2022
Вызывает ли оптимизация возвращаемого значения неопределенное поведение?
Читая эту статью в Википедии, один из ответивших указал на следующий вопрос:
Конструктор копирования 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 просмотров
schedule
09.12.2022
Работает ли оптимизация возвращаемого значения при назначении другому типу?
Рассмотрим следующие два класса:
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 просмотров
schedule
28.03.2023
константная ссылка на оптимизацию временного и возвращаемого значения
Мне известно, что присвоение rvalue ссылке const lvalue продлевает время жизни временных объектов до конца области видимости. Однако мне непонятно, когда использовать это, а когда полагаться на оптимизацию возвращаемого значения.
LargeObject...
6683 просмотров
schedule
29.01.2023
Как компилятор определяет, когда RVO безопасен?
Как компилятор определяет, когда RVO безопасен? И нет, я имею в виду не rvalue, а lvalue - если я правильно понимаю, RVO работает, "пересылая" целевой адрес методу, поэтому он возвращается на целевой адрес вместо адреса временного, а затем копирует/...
459 просмотров
schedule
25.03.2022
Конструктор копирования не вызывается при инициализации объекта с возвращаемым значением функции
Рассмотрим следующий код:
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(): a(5)
{
cout << "Constructor\n";
}
A(const A &b)
{
a =...
782 просмотров
schedule
04.09.2022
Как в C ++ происходит высвобождение памяти для больших возвращаемых значений (например, строки)?
Скажем, у меня есть функция A () в C ++, и она вызывает другую функцию B (). B () открывает файл и читает длинную строку, а затем возвращает эту строку в A (). Затем A () использует эту строку как входной параметр для C (). C () ожидает ссылку на...
265 просмотров
schedule
28.12.2022
std::move и оптимизация RVO
Недавно я прочитал, как std::move может ускорить код, просто перемещая значения вместо их копирования. Поэтому я сделал тестовую программу для сравнения скорости с использованием std::vector .
Код:
#include <iostream>
#include...
572 просмотров
schedule
16.07.2023
Работает ли RVO с элементами объекта?
Рассмотрим следующее:
struct A { /* ... */ };
A foo() {
auto p = std::make_pair(A{}, 2);
// ... do something
return p.first;
}
auto a = foo();
Будет ли p.first копироваться, перемещаться или редактироваться RVO?
1077 просмотров
schedule
23.03.2024
Оптимизация возвращаемого значения и геттеры const для элементов данных [дубликаты]
Я понимаю, что RVO позволяет копировать, среди прочего, временные и локальные переменные, но как насчет элементов данных?
Чтобы сфокусироваться на вопросе, какой из следующих трех вариантов является лучшим способом написать получатель констант для...
73 просмотров
schedule
21.05.2022
В чем магия оптимизации возвращаемой стоимости?
В основном я делаю следующее. В моем классе D есть три конструктора (по умолчанию, перемещение, копирование) и два перегруженных оператора присваивания (перемещение и копирование). Я ожидал, что любое создание объекта типа D вызовет хотя бы один из...
105 просмотров
schedule
17.07.2023