Информация об изменениях

Сообщение Re[7]: Возврат ошибок из недр вложенных вызовов от 05.11.2020 20:03

Изменено 05.11.2020 20:48 so5team

Re[7]: Возврат ошибок из недр вложенных вызовов
Здравствуйте, Евгений Музыченко, Вы писали:

EM>Как туда можно прикрутить move-семантику, я в принципе не представляю. Если знаете секрет — поделитесь, пожалуйста.


Может как-то так, если уж вы принципиально не включаете оптимизацию в компиляторе:
std::vector<std::string> child() {...}

std::vector<std::string> parent() {
  ...
  auto r = std::move(child()); // (2)
  ...
  return std::move(r); // (1)
}

Но для современных компиляторов этот явный move в точке (2) -- это как раз принудительная пессимизация. А move в точке (1) не имеет смысла.

S>>Так вы мало того, что рил-тайм код в отладчике умудряетесь пошагово отлаживать


ЕМ>Я уже объяснил, что не весь реалтайм, а только соответствующие части. Что именно Вас в этом удивляет?


Удивляет, что есть человек, который может пошагово отлаживать реалтаймовый код в отладчике.

S>>так еще и одним взглядом определяете во что современные шаблонные кружева транслируются?


ЕМ>"Современные шаблонные кружева" как-то влияют на алгоритмы кодогенерации, и есть примеры, когда для шаблонного класса создается более эффективный код, чем для эквивалентного нешаблонного?


Современные шаблонные кружева влияют на то, что видит человек в коде. Там может быть шаблонный класс, который наследуется от кучи других шаблонных классов, которые для какого-то случая имеют специализации и все это схлопывается во что-то благодаря empty base optimization.

Вы, походу, все это можете увидеть просто глазом. Впрочем, если вам под силу пошагово отлаживать реалтаймовый код, то вам и это по плечу.

S>>Реальное время -- оно же такое, не критичное.


ЕМ>Вы твердо уверены в том, что правильно и полностью понимаете смысл понятия "реальное время"?


До ваших откровений был уверен. Но теперь сильно сомневаюсь.
Re[7]: Возврат ошибок из недр вложенных вызовов
Здравствуйте, Евгений Музыченко, Вы писали:

EM>Как туда можно прикрутить move-семантику, я в принципе не представляю. Если знаете секрет — поделитесь, пожалуйста.


Может как-то так, если уж вы принципиально не включаете оптимизацию в компиляторе:
std::vector<std::string> child() {...}

std::vector<std::string> parent() {
  ...
  auto r = std::move(child()); // (1)
  ...
  return std::move(r); // (2)
}

Но для современных компиляторов этот явный move в точке (2) -- это как раз принудительная пессимизация. А move в точке (1) не имеет смысла.

S>>Так вы мало того, что рил-тайм код в отладчике умудряетесь пошагово отлаживать


ЕМ>Я уже объяснил, что не весь реалтайм, а только соответствующие части. Что именно Вас в этом удивляет?


Удивляет, что есть человек, который может пошагово отлаживать реалтаймовый код в отладчике.

S>>так еще и одним взглядом определяете во что современные шаблонные кружева транслируются?


ЕМ>"Современные шаблонные кружева" как-то влияют на алгоритмы кодогенерации, и есть примеры, когда для шаблонного класса создается более эффективный код, чем для эквивалентного нешаблонного?


Современные шаблонные кружева влияют на то, что видит человек в коде. Там может быть шаблонный класс, который наследуется от кучи других шаблонных классов, которые для какого-то случая имеют специализации и все это схлопывается во что-то благодаря empty base optimization.

Вы, походу, все это можете увидеть просто глазом. Впрочем, если вам под силу пошагово отлаживать реалтаймовый код, то вам и это по плечу.

S>>Реальное время -- оно же такое, не критичное.


ЕМ>Вы твердо уверены в том, что правильно и полностью понимаете смысл понятия "реальное время"?


До ваших откровений был уверен. Но теперь сильно сомневаюсь.