![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#61 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#62 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]()
tpl.get<(0)>() здесь прямое попадание, нагрузки быть не должно как вы и писали эти метапрограммы сливаются и исключаются но управлять через переменную нельзя только константой в отличие от механизма выше. Но выше рекурсии потому что даже индексы выводятся.
|
![]() |
![]() |
![]() |
#63 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
![]()
Loksiin12, я выше скидывал ссылку https://godbolt.org/ , вбей туда код из первого поста.
Выбери какой-нибудь C++ компилятор (например, x86-64 clang ) , справа в окошке введи опции компилятора сначала без оптимизации Код:
затем добавляем оптимизацию Код:
затем Код:
есть ещё -O3 и -O4 |
![]() |
![]() |
![]() |
#64 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
![]()
чтобы оптимизатор тупо не выкидывал пустой код, можно добавить вывод в консоль
Код:
|
![]() |
![]() |
![]() |
#65 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#66 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
![]()
Loksiin12, я не знаю, что там за попадания в функции и кручения индексов, в C++ нет таких терминов. В программе обычно всё чётко заранее заложено, если нет неопределённого поведения. В метапрограмме заранее заложена генерация классов, функций и констант
то, что у тебя там всё выводится в консоль - так это ты сам побочных эффектов наплодил Код:
а вот так Код:
имеется шаблон Код:
Обрати внимание, что более ранние подстановки - ниже по коду. То есть, когда компилятору нужно рекурсивно инстанцировать шаблон, он создаёт его код ВЫШЕ текущей точки подстановки, чтобы, согласно правилам C++ было возможно использовать получившийся класс Код:
Код:
|
![]() |
![]() |
![]() |
#67 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]() Цитата:
Код:
есть такой параметр называется inline, возникает вопрос зачем его ставить в ручную если оптимизатор сам это сделает в возможных и целесообразных случаях? есть и другие соглашения вызовов но они тоже сомнительны например fatscal, анологичный вопрос компилятор сам положит нужные элементы в регистры которые чаще используются зачем писать лишний код. Последний раз редактировалось Loksiin12; 03.11.2020 в 14:41. |
|
![]() |
![]() |
![]() |
#68 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]()
Может не все компиляторы оптимизируют код или просто настроены по разному.
|
![]() |
![]() |
![]() |
#69 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
![]()
ввод/вывод оптимизатор не имеет права выкинуть, потому что это они вызывают побочные эффекты. А вот такой локальный вызов функции, которая ничего не меняет, оптимизатор может просто выкинуть или встроить по месту вызова, если там ничего сложного не происходит
в ранних стандартах C++ это была подсказка компилятору, что функцию неплохо бы заинлайнить (но он мог делать это на своё усмотрение). В новых стандартах inline в глобальной области видимости означает, что объект (функция или переменная) будет всего один, даже если он из заголовочника попал в несколько единиц трансляции |
![]() |
![]() |
![]() |
#70 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
![]()
98ой стандарт по умолчанию не будет её инлайнить, или скорее всего будет, довольно абстрактное описание вы дали этому событию. Значит целесообразно ставить этот спецификатор.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разобраться с кодом | Boris2 | Помощь студентам | 1 | 15.07.2013 15:58 |
С++ разобраться с кодом | marina12 | Помощь студентам | 2 | 21.05.2013 23:22 |
разобраться с кодом | iris_ka | Помощь студентам | 0 | 16.05.2012 17:19 |
Разобраться с кодом. | Vlero | PHP | 2 | 20.01.2011 12:46 |
проблемка с кодом, результат получается немного не такой как надо | hen | Помощь студентам | 3 | 24.04.2009 15:11 |