могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
Прогнать обычный тест отдельно для 1 и 2 и сравнить время? )
Если время ничтожно мало, прогнать одинаковую оптимизацию с вариантом 1 и вариантом 2.
ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
занялся опять оптимизацией, не уверен, что сумею протестировать на скорость выполнения такой код:
подозреваю, что вариант №2 будет быстрее работать?
если да, где могут быть "подводные камни" - использую в OnTick() - для поиска в оптимизаторе времени торговли, ищу способы оптимизировать код
ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
В дебаг режиме проверяй. Там компилятор по идее не должен оптимизировать, хотя ХЗ, как там на самом деле.
Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.
По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?
Потому что, кроме metatrader, есть еще ОС Windows, которая в конечном итоге и решает, кому из нескольки десятков процессов (кстати, у каждого из них, по умолчанию, адрессное пространство 4 ГБ), реально (сколько у Вам там?) оперативки выделять.
Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.
По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?
Специально, мы ничего для этого не предпринимаем - это особенность ОС (а действительно ли пользователю нужны гигабайты?
Если хотите иметь "горячую" память в критически важной точке программы, надо перед этой точкой "пробежаться" по страницам выделенного куска, чтобы страницы виртуальной памяти процесса получили физические.
Но, из MQL, доступа к зарезервированному участку массива нет.
Специально, мы ничего для этого не предпринимаем - это особенность ОС (а действительно ли пользователю нужны гигабайты?
Если хотите иметь "горячую" память в критически важной точке программы, надо перед этой точкой "пробежаться" по страницам выделенного куска, чтобы страницы виртуальной памяти процесса получили физические.
Но, из MQL, доступа к зарезервированному участку массива нет.
Спасибо. Интересно, как должно сказываться на производительности, если делать сразу полноценный ArrayResize на гигабайты.
могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
Прогнать обычный тест отдельно для 1 и 2 и сравнить время? )
Если время ничтожно мало, прогнать одинаковую оптимизацию с вариантом 1 и вариантом 2.
ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
https://www.mql5.com/ru/code/18804
занялся опять оптимизацией, не уверен, что сумею протестировать на скорость выполнения такой код:
подозреваю, что вариант №2 будет быстрее работать?
если да, где могут быть "подводные камни" - использую в OnTick() - для поиска в оптимизаторе времени торговли, ищу способы оптимизировать код
ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю
Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.
По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?
Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.
По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?
Прогнать обычный тест отдельно для 1 и 2 и сравнить время? )
Если время ничтожно мало, прогнать одинаковую оптимизацию с вариантом 1 и вариантом 2.
https://www.mql5.com/ru/code/18804
что то делаю не так, все равно не смог увидеть отличий, результаты плавают при одиночном прогоне в районе 0.1 сек
Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.
По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?
Специально, мы ничего для этого не предпринимаем - это особенность ОС (а действительно ли пользователю нужны гигабайты?
Если хотите иметь "горячую" память в критически важной точке программы, надо перед этой точкой "пробежаться" по страницам выделенного куска, чтобы страницы виртуальной памяти процесса получили физические.
Но, из MQL, доступа к зарезервированному участку массива нет.
Специально, мы ничего для этого не предпринимаем - это особенность ОС (а действительно ли пользователю нужны гигабайты?
Если хотите иметь "горячую" память в критически важной точке программы, надо перед этой точкой "пробежаться" по страницам выделенного куска, чтобы страницы виртуальной памяти процесса получили физические.
Но, из MQL, доступа к зарезервированному участку массива нет.
Спасибо. Интересно, как должно сказываться на производительности, если делать сразу полноценный ArrayResize на гигабайты.
протестировал, запустил полный перебор при оптимизации своего советника на 5000 проходов, посчитал просто по логу тестера
1. 14:04:28.365 - 14:15:47.481 = 11 м 19 сек
2. 13:49:56.885 - 14:00:30.819 = 10 м 34 сек
3. 14:28:35.89 - 14:41:11.659 = 12 м 36 сек
в принципе как и ожидал вариант №2 быстрее, на 5000 проходов выигрыш около 30 секунд,тоже довольно не плохо
Прошу помочь вызвать это меню через WinAPI.
Строку с выбранным именем советника получить получается. Там в ComboBox она всего одна, в отличие от MT4.
А вот вызвать меню - не выходит. BM_CLICK не помогает.
ЗЫ Чем отслеживаете Messages в x64?
Решил задачу через WM_LBUTTONDOWN.