Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
это называется "развёртываение цикла" и без всякого OO и шаблонов делается компилятором (по крайней мере должно).
Если заглянуть в промежуточный код (в ассемблер), то будут просто подряд N операций вместо цикла.
А можете рассказать, что происходит при рекурсивном вызове функции?
А можете рассказать, что происходит при рекурсивном вызове функции?
а там нету рекурсивного вызова целевых функций :-)
в приведённом по ссылке примере N:=const, рекурсия только при генерации кода из шаблона и та хвостовая. По ссылке хитрый изврат свернуть const-цикл в рекурсию шаблонов и назвать умным словом
если-бы макросы имели циклы это записывалось бы как-то так:
#for x=0, x<N, x++
print("x=%d",x);
#endfor
и после макро-процессора развёртывалось бы в последовательность N принтов. (что собственно и произошло, только через шаблонные классы)
То есть фокус работает только если N известно на время компиляции
а там нету рекурсивного вызова целевых функций :-)
в приведённом по ссылке примере N:=const, рекурсия только при генерации кода из шаблона и та хвостовая. По ссылке хитрый изврат свернуть const-цикл в рекурсию шаблонов и назвать умным словом
если-бы макросы имели циклы это записывалось бы как-то так:
#for x=0, x<N, x++
print("x=%d",x);
#endfor
и после макро-процессора развёртывалось бы в последовательность N принтов. (что собственно и произошло, только через шаблонные классы)
То есть фокус работает только если N известно на время компиляции
Не поверите, но я знаю как работают шаблоны и что там за N, и что в итоге получается. А мой вопрос про рекурсивный вызов функции был именно про рекурсивный вызов функции, а не про то, как там?
Не поверите, но я знаю как работают шаблоны и что там за N, и что в итоге получается. А мой вопрос про рекурсивный вызов функции был именно про рекурсивный вызов функции, а не про то, как там?
это типа экзамена "на слабо?" :-) я отчего-то подумал что обсуждается приведённый пример..был неправ :-)
если компилятор сможет преобразовать рекурсию в хвостовую (или она сразу явно такая, или ему указали), то физически рекурсии не будет - он сделает цикл (обратный переход) и каждая итерация будет "топтать" прежний фрейм стека.
это типа экзамена "на слабо?" :-) я отчего-то подумал что обсуждается приведённый пример..был неправ :-)
если компилятор сможет преобразовать рекурсию в хвостовую (или она сразу явно такая, или ему указали), то физически рекурсии не будет - он сделает цикл (обратный переход) и каждая итерация будет "топтать" прежний фрейм стека.
Причем тут слабо? Просто вопрос. Ну нет, так нет.
Даже возиться не хочу. Сделал простые структуры.
По какой причине доступ к первому полю простой структуры зависит от ее размера - не понятно.
Гы. Все банально - количество бит для перемножения больше)))) Сделай, что бы количество бит в двоичном представлении размера структуры одинаковое было))) Тупо процессору, как впрочем и человеку, дольше перемножать 1111*101, чем 1111*10)
Проверять не буду, других задач полно. Но верится с трудом.
В ME работаю с mqh, нажимаю ALT+N - в древовидном виде в окне Навигатор показывается расположение файла.
Теперь хочу сделать его инклуд в открытый mq5-файл. Тащу мышкой mqh из дерева в mq5, но соответствующая include-строка не генерируется.
Проверять не буду, других задач полно. Но верится с трудом.
Это для маленькой структуры
Это для большой.
VS2019, Debug x64, в релизной он их заинлайнил, но скорость та же.
Единственное отличие в инструкциях imul, третий операнд, в двух местах. Инструкция - это, как раз, вычисление смещения в массиве, а третий операнд - размер структуры в байтах.
Так, что никакой мистики - законы физики в действии.
Так, что никакой мистики - законы физики в действии.
если написать такие классы:
судя по Вашему исследованию класс В будет медленнее выполняться если часто использовать поля структуры при расчетах?