|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.11.2020, 19:40 | #61 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
Цитата:
Код:
|
|
01.11.2020, 19:42 | #62 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
tpl.get<(0)>() здесь прямое попадание, нагрузки быть не должно как вы и писали эти метапрограммы сливаются и исключаются но управлять через переменную нельзя только константой в отличие от механизма выше. Но выше рекурсии потому что даже индексы выводятся.
|
02.11.2020, 10:19 | #63 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 960
|
Loksiin12, я выше скидывал ссылку https://godbolt.org/ , вбей туда код из первого поста.
Выбери какой-нибудь C++ компилятор (например, x86-64 clang ) , справа в окошке введи опции компилятора сначала без оптимизации Код:
затем добавляем оптимизацию Код:
затем Код:
есть ещё -O3 и -O4 |
02.11.2020, 10:22 | #64 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 960
|
чтобы оптимизатор тупо не выкидывал пустой код, можно добавить вывод в консоль
Код:
|
02.11.2020, 17:27 | #65 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
Цитата:
Код:
|
|
03.11.2020, 07:31 | #66 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 960
|
Loksiin12, я не знаю, что там за попадания в функции и кручения индексов, в C++ нет таких терминов. В программе обычно всё чётко заранее заложено, если нет неопределённого поведения. В метапрограмме заранее заложена генерация классов, функций и констант
то, что у тебя там всё выводится в консоль - так это ты сам побочных эффектов наплодил Код:
а вот так Код:
имеется шаблон Код:
Обрати внимание, что более ранние подстановки - ниже по коду. То есть, когда компилятору нужно рекурсивно инстанцировать шаблон, он создаёт его код ВЫШЕ текущей точки подстановки, чтобы, согласно правилам C++ было возможно использовать получившийся класс Код:
Код:
|
03.11.2020, 14:37 | #67 | |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
Цитата:
Код:
есть такой параметр называется inline, возникает вопрос зачем его ставить в ручную если оптимизатор сам это сделает в возможных и целесообразных случаях? есть и другие соглашения вызовов но они тоже сомнительны например fatscal, анологичный вопрос компилятор сам положит нужные элементы в регистры которые чаще используются зачем писать лишний код. Последний раз редактировалось Loksiin12; 03.11.2020 в 14:41. |
|
03.11.2020, 14:42 | #68 |
Форумчанин
Регистрация: 04.10.2020
Сообщений: 136
|
Может не все компиляторы оптимизируют код или просто настроены по разному.
|
04.11.2020, 08:34 | #69 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 960
|
ввод/вывод оптимизатор не имеет права выкинуть, потому что это они вызывают побочные эффекты. А вот такой локальный вызов функции, которая ничего не меняет, оптимизатор может просто выкинуть или встроить по месту вызова, если там ничего сложного не происходит
в ранних стандартах C++ это была подсказка компилятору, что функцию неплохо бы заинлайнить (но он мог делать это на своё усмотрение). В новых стандартах inline в глобальной области видимости означает, что объект (функция или переменная) будет всего один, даже если он из заголовочника попал в несколько единиц трансляции |
04.11.2020, 09:14 | #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 |