Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то вы о структурах и классах (без new) забыли - они оба на стеке выделяются.
не путайте с С++, тут всё ближе к шарпу
не путайте с С++, тут всё ближе к шарпу
Это ваши фантазии, а не реальность.
Не стоит доказывать то, что сами не проверяли...
Создание локальных переменных в виде объектов структур и классов (без new) происходит на стеке.
Как +- устроены работают массивы в МТ5 описывал ранее.
Какой обломс!
1 - через создание объект. 2 - просто через обычный вызов функции. Первое число - время в миллисекундах, на второе не надо обращать внимания.
Аж чуть ли не в 10 раз быстрее (а иногда и более, чем в 10 раз). Печалька какая... стек... куча... ***ча
Ну почему же, не обращать внимание? Дай угадаю: INT_MAX раз выполнили действие через создание временного объекта, а потом то же действие через вызов функции?
В общем-то, ожидаемый результат, учитывая то, что в рантайме еще и танцы с бубном вокруг создания класса идут (надо же этот handle, который очень смахивает на индекс в некоем контейнере получить).
PS. Исходники для воспроизведения где?
PPS. А Вы уверены, что функция вызывалась? Все таки, оптимизатор есть и в этом коде, не факт, что будет вызов функции в run-time:
То, что UB в mql есть - доказывает этот код:
То, что UB в mql есть - доказывает этот код:
Ловко вы обвели компилятор вокруг пальца:
- false ветка выбрасывается, так как нет break из while(1) цикла.
- true возвращается, так как операции выполняются с локальными переменными без какого-либо взаимодействия с "внешним миром" и выполнения данного кода тоже выбрасывается.
Ловко вы обвели компилятор вокруг пальца:
- false ветка выбрасывается, так как нет break из while(1) цикла.
- true возвращается, так как операции выполняются с локальными переменными без какого-либо взаимодействия с "внешним миром" и выполнения данного кода тоже выбрасывается.
Это не я - это один из примеров на просторах инета. Один в один с плюсов.
Ну почему же, не обращать внимание? Дай угадаю: INT_MAX раз выполнили действие через создание временного объекта, а потом то же действие через вызов функции?
В общем-то, ожидаемый результат, учитывая то, что в рантайме еще и танцы с бубном вокруг создания класса идут (надо же этот handle, который очень смахивает на индекс в некоем контейнере получить).
PS. Исходники для воспроизведения где?
PPS. А Вы уверены, что функция вызывалась? Все таки, оптимизатор есть и в этом коде, не факт, что будет вызов функции в run-time:
То, что UB в mql есть - доказывает этот код:
Не угадал. Здесь не гадать надо, а достаточно помнить вчерашний день, в случая проблем с памятью, можно по цитатам посмотреть о чем разговор. С чего вдруг результат стал ожидаемым, если до этого вы утверждали обратное?
Да, уверен, функция вызывалась. А вам все так нравится мечтать, что я идиот? Почему вопрос только про функцию, а может и объект тоже не создавался? Или вы так прям уверены, что знаете как устроены все компиляторы?
Можете объяснить о чем речь, а то я чуть-чуть туповат, трижды прочитал - но ни чего так и не понял...
Посмотрите по цитатам о чем разговор. Что я процитировал, и в ответ на что я получал этот ответ из цитаты.
Раз Дмитрий застеснялся свой код выложить, то пришлось самому 15 мин. тестам уделить.
Упс. При идентичных действиях, разница всего 30% получилась.
Разница во времени выполнения сохраняется и без всех этих телодвижений со статическими переменными и полями. Именно разница в микросекундах, а не процентное соотношение.
Вывод: затраты на создание временного объекта на стеке достаточно малы, на моем, не самом быстром компе, составили порядка 30-40 нс/шт (наносекунда), что бы на них, в подавляющем большинстве случаев, обращать внимание.
PS. А я плохо про разработчиков подумал, ан нет, надо просто не верить людям на слово и проверять их)))
Раз Дмитрий застеснялся свой код выложить, то пришлось самому 15 мин. тестам уделить.
Упс. При идентичных действиях, разница всего 30% получилась.
Разница во времени выполнения сохраняется и без всех этих телодвижений со статическими переменными и полями. Именно разница в микросекундах, а не процентное соотношение.
Вывод: затраты на создание временного объекта на стеке достаточно малы, на моем, не самом быстром компе, составили порядка 30-40 нс/шт (наносекунда), что бы на них, в подавляющем большинстве случаев, обращать внимание.
PS. А я плохо про разработчиков подумал, ан нет, надо просто не верить людям на слово и проверять их)))
А еще больше сделай всяких разных вычислений внутри, разница еще меньше будет. Да и вообще, это тест сложно назвать тестом идентичного функционала.
Да еще и сами тесты не идентичны.