@reactos_ru

Страница 944 из 1049
Alex Фэils?︙
12.10.2018
17:12:27
смотря какой компилятор

Tim
12.10.2018
17:12:32
gcc тот же

Краб ходит E7
12.10.2018
17:12:44
Слава Си

ськам

Google
Tim
12.10.2018
17:12:53
испортил все ты

Alex Фэils?︙
12.10.2018
17:12:55
там один хрен эскобар

Т-34
12.10.2018
17:14:15
а где эта оптимизация вообще задействуется на сях без объектной системы?
а что, в структурах не может быть полей-указателей?

Tim
12.10.2018
17:14:42
ща подумаю

Tim
12.10.2018
17:15:10
Вообще поясни за эту оптимизацию

я может ее не понял до конца

Краб ходит E7
12.10.2018
17:16:02
пока...

Т-34
12.10.2018
17:16:34
покажи тесты
ну, гуглится же легко. Первая попавшаяся https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/c.html

Tim
12.10.2018
17:16:49
ахуеть

он довольно значительно дерет

думаю дело в том что в с++ тестах юзают громоздкие цппшные либы

Google
Alex Фэils?︙
12.10.2018
17:17:26
ахаха

в @procxx разбирали эти т.н. "тесты"

Tim
12.10.2018
17:17:42


Так я понял про эту оптимизацию

по идее она должна быть в сях

когда функция возвращает значение структуры

Alex Фэils?︙
12.10.2018
17:20:20
https://t.me/ProCxx/232479

можно начать отсюда

там замечательный тред об адекватности этих тестов

ськам
был веселый стикер в паке "ИТМО" на эту тему

Краб ходит E7
12.10.2018
17:21:09
Пак?

Т-34
12.10.2018
17:21:54
Вообще поясни за эту оптимизацию
RVO перемещает данные временного объекта вместо копирования. CE убирает лишние копирования, например, при инициализации объекта

Tim
12.10.2018
17:22:14
Значит я ее правильно понял

Это например когда

есть функция

struct Huj test();

и она перобразуется как huj(struct Huj*)

Т-34
12.10.2018
17:22:42
думаю дело в том что в с++ тестах юзают громоздкие цппшные либы
так а смысл юзать либы чистого си? Чтобы си с си сравнить?

Alex Фэils?︙
12.10.2018
17:22:51
и она перобразуется как huj(struct Huj*)
в @supapro иди с такими вопросами, и не пиши по куче сообщений, пожалуйста

Tim
12.10.2018
17:23:26
так а смысл юзать либы чистого си? Чтобы си с си сравнить?
Чтобы сравнить качество этих компиляторов.

Google
Alex Фэils?︙
12.10.2018
17:23:30
Copy elision - Wikipedia en.wikipedia.org In C++ computer programming, copy elision refers to a compiler optimization technique that eliminates unnecessary copying of objects. The C++ language standard generally allows implementations to perform any optimization, provided the resulting program's observable behavior is the same as if...

Чтобы сравнить качество этих компиляторов.
качество не сравнивается, т.к. имплементации разные

Т-34
12.10.2018
17:25:14
и она перобразуется как huj(struct Huj*)
непонятно, что вы хотели сказать

Alex Фэils?︙
12.10.2018
17:25:30
Tim
12.10.2018
17:26:48
непонятно, что вы хотели сказать
Вместо возвращения новой структуры, будет передаваться функции ссылка на эту структуру, которая будет обрабатываться такими же подобными функциями. Как-то так.

Т-34
12.10.2018
17:28:22
Вместо возвращения новой структуры, будет передаваться функции ссылка на эту структуру, которая будет обрабатываться такими же подобными функциями. Как-то так.
ну, не всё так просто. При выходе из функции стек сворачивается, и данные становятся мусором. Вот самому интересно, как компилятор тут хитрит

Tim
12.10.2018
17:29:49
Создает не в стеке функции этот объект, на который уже ссылается, видимо

Alex Фэils?︙
12.10.2018
17:31:34
когда ты пойнтер на объект сам передаешь, и оно пишет туда сразу

еще можно на godbolt.org проверить

Т-34
12.10.2018
17:33:23
Создает не в стеке функции этот объект, на который уже ссылается, видимо
типа такого: Class obj = Class funct(); заменяется на Class obj; funct (&obj); ?

Alex Фэils?︙
12.10.2018
17:33:39
д

Т-34
12.10.2018
17:36:04
а, ну так это я и сам могу делать. Вот move semantics бы по-умолчанию или какие-нибудь низкоуровневые оптимизации...

Т-34
12.10.2018
17:37:11
в крестах могут автогенериться конструкторы перемещения, а вот в сях всегда копирование...

Tim
12.10.2018
17:38:00
в крестах могут автогенериться конструкторы перемещения, а вот в сях всегда копирование...
В крестах не шарю, знаю их на уровне посредственном. А что можно в сях кроме копирования то сделать?

Alex Фэils?︙
12.10.2018
17:38:29
пойнтер скопировать

Т-34
12.10.2018
17:39:09
ну, скажем, для структур МЕНЯТЬ все поля-указатели местами при присваивании, остальное - копировать

Google
Т-34
12.10.2018
17:39:39
а нет, это своп будет

ну, тогда тупо присваеваемому указателю дать адрес, а исходному - nullptr

Т-34
12.10.2018
17:42:02
вроде так и делается.
а, ну да. Тогда проблема получается только в контейнерах? Хотя, в сях нет никаких контейнеров, кроме статических массивов

Tim
12.10.2018
17:42:32
В сях надо самому писать все структуры данных.

Т-34
12.10.2018
17:43:28
В сях надо самому писать все структуры данных.
вот странно, что до сих пор нет в std ни list, ни vector, ни array...

Tim
12.10.2018
17:43:49
Они же в std::namespace, нет?

Т-34
12.10.2018
17:44:08
в си нет namespace

Tim
12.10.2018
17:44:21
А, ты про си.

Но в си нет встроенных этих листов да аррэев потому что объектов просто нет. Единственное, возможно иметь в структуре указатель на функцию и таким образом имитировать ООП.

Tim
12.10.2018
17:47:16
зато есть структуры, экземпляры структур и указатели (в т.ч. на функцию)
Впринципе, насколько я знаю в С++ объектная система основана на том, что создаются при создании обхекта две структуры - структура с указателями на функцию и с данными, так что весь ООП описан у них сишными методами => можно писать на си в стиле объектном (правда запарно это немного и зачастую не надо).

Т-34
12.10.2018
17:47:17
а где в std используется ООП? Я там только перегрузку видел. Но во-первых, можно и без неё прожить, а во-вторых, в C11 есть _Generic

Т-34
12.10.2018
17:49:22
Везде. В stream'ах, в list'ах и array'ях тех же.
перегрузки есть. Ну, какая-то инкапсуляция (на которую можно забить). А наследование есть?

Т-34
12.10.2018
17:50:12
там беда не столько в ооп, сколько в шаблонах

FailsBot
12.10.2018
17:50:23
Search results for "iostream" 1. <iostream> 2. std::iostream 3. std::istream 4. std::ostream::beg 5. std::ostream::cur 6. std::ostream::end 7. std::ostream::hex 8. std::ostream::oct 9. std::ostream::put 10. std::ostream::Init 11. std::ostream::left 12. std::ostream::swap 13. std::basic_iostream 14. std::ostream::clear 15. std::ostream::event 16. std::ostream::fixed 17. std::ostream::right 18. std::ostream::tellp 19. std::ostream::write 20. std::ostream::badbit 21. std::ostream::eofbit 22. std::ostream::skipws 23. std::ostream::failbit 24. std::ostream::goodbit 25. std::ostream::iostate 26. std::ostream::ostream 27. std::ostream::seekdir

Search results for "iostream" (Page 2) 28. std::ostream::showpos 29. std::ostream::unitbuf 30. std::ostream::internal 31. std::ostream::showbase 32. std::ostream::~ostream 33. std::ostream::basefield 34. std::ostream::boolalpha 35. std::ostream::set_rdbuf 36. std::ostream::showpoint 37. std::ostream::uppercase 38. std::ostream::floatfield 39. std::ostream::operator<< 40. std::ostream::scientific 41. std::ostream::adjustfield 42. std::ostream::erase_event 43. std::ostream::imbue_event 44. std::ostream::copyfmt_event

Google
Alex Фэils?︙
12.10.2018
17:50:38
Tim
12.10.2018
17:50:39
структура с указателями создается только для виртуальных функций
Значит они при копировании объекта копируют полностью все функции?

Т-34
12.10.2018
17:50:47
хотя, есть же void*, так что можно забить на шаблоны

Alex Фэils?︙
12.10.2018
17:50:54
плохая идея

функции тебе линкер статически слинкует

вообще рекомедую какую-н. базовую книжку по крестам почитать, там это поясняется

Tim
12.10.2018
17:52:11
хотя, есть же void*, так что можно забить на шаблоны
Да, я так и делал. Только немного запаришься с приведением типов.

Alex Фэils?︙
12.10.2018
17:52:11
ща могу скмнуть из своей книгопомойки

Alex Фэils?︙
12.10.2018
17:52:47
Tim
12.10.2018
17:52:51
приведения типа Си = это мегаотсрел ноги
Они там налевонаправо юзаются.

прата норм
Там описаны подобные тонкости?

Спасибо

Т-34
12.10.2018
17:53:09
приведения типа Си = это мегаотсрел ноги
а в крестах компилятор постоянно ругается, когда ты пытаешься реинтёрпрет_кастовать

Alex Фэils?︙
12.10.2018
17:53:11
у Си-каста семантика слишком перегружена, он себя ведет как эти 4 вещи сразу, поэтому с ним часто ошибаются

Т-34
12.10.2018
17:54:09
4? Вроде больше

Страница 944 из 1049