Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет смысла гадать. Такое понимание может быть и правильным, но оно противоречит вышеприведенной официальной формулировке (может быть она неточна).
Когда в функции происходит пауза, эта функция есть в стеке вызовов и потому это должно отражаться увеличением общего счетчика. Про "счетчик вызовов" функции ничего не было сказано, упомянуты только счетчик появления на стеке и счетчик нахождения внутри функции.
Да, нужно документированное пояснение, как анализировать значения.
А разве "вызов функции", и "функция есть в стеке вызовов", это разное понимание?
Вызвали функцию, спровоцировали её размещение в стек.
Не вызвали, значит её там нет.
Соответственно простыми словами, получается счётчик вызовов функции (счетчик появления на стеке).
Поведение профайлера полностью аналогично остальным C++ компиляторам.
Попробуйте новый профайлер и все станет ясно.
Да, нужно документированное пояснение, как анализировать значения.
А разве "вызов функции", и "функция есть в стеке вызовов", это разное понимаете?
Вызвали функцию, спровоцировали её размещение в стек.
Не вызвали, значит её там нет.
Соответственно простыми словами, получается счётчик вызовов функции (счетчик появления на стеке).
В новом профилировщике все счетчики - это счетчики прерывания профилируемого кода самим профилировщиком. Если функция посчиталась на стеке 1 раз, это не значит, что между соседними 1-миллисекундными интервалами прерываний её не вызвали 100 раз вместо 1. Иными словами, подсчет вызов не ведется в принципе. Пожалуй, это может ввести в заблуждение, и раньше эта инфа бывала полезной для отладки и понимания, "откуда ноги растут".
Может быть они подразумевают, что самая вложенная функция, то есть текущая в которой произошла пауза, не находится в стеке, но имхо это было бы странно.
Поведение профайлера полностью аналогично остальным C++ компиляторам.
Попробуйте новый профайлер и все станет ясно.
А документации не будет? Только метод тыка?
В MS показывается время, а не счетчики.
В новом профилировщике все счетчики - это счетчики прерывания профилируемого кода самим профилировщиком. Если функция посчиталась на стеке 1 раз, это не значит, что между соседними 1-миллисекундными интервалами прерываний её не вызвали 100 раз вместо 1. Иными словами, подсчет вызов не ведется в принципе. Пожалуй, это может ввести в заблуждение, и раньше эта инфа бывала полезной для отладки и понимания, "откуда ноги растут".
Может быть они подразумевают, что самая вложенная функция, то есть текущая в которой произошла пауза, не находится в стеке, но имхо это было бы странно.
Понятно, то есть по принципу try catch
Если в стеке, то считаем. То есть контроль чистой отработки.
А документации не будет? Только метод тыка?
В MS показывается время, а не счетчики.
А чего сложного? Даже код подкрашивается от степени нагрузки.
Общий принцип невмешивающегося(без встраивания своего кода внутрь проверяемого, без инструментации) профилирования един для всех.
И в Visual Studio ровно такие же отчеты как и у нас:
Везде относительные цифры затрат, а не чистое абсолютное время.
Всегда надо учитывать, что при профайлинге семплингом(мы пока используем частоту 1000 раз в сек, но будем автоматически увеличивать частоту на более мощных процессорах) всегда происходят потери мелких функций или участков кода. Это касается любого языка и является основой метода.
Поэтому все цифры относительные и статистические. Говорить об абсолютном времени затрат не совсем корректно.
глюк с иконкой сообщения снова не исправили
Поведение профайлера полностью аналогично остальным C++ компиляторам.
Попробуйте новый профайлер и все станет ясно.
Раньше было количество выполнений функций, а сейчас не вижу. Была полезная штука.
Эта всплывающая подсказка, как я понимаю, не количество, а относительные затраты, которые выражаются пока не ясно в чем?
И эти нули - это просто еще недопилили?
И, надеюсь, эти ужасные красные горизонтальные маркеры на всю ширину - временное явление.
Ренат, ну сделайте пожалуйста окна графиков терминала, как подсказка в редакторе.
Шикарное окно для чарта, с такой рамкой и заголовком.
И нужно ли отображать поле скрола в данном случае. Мне кажется лишнее.
Раньше было количество выполнений функций, а сейчас не вижу. Была полезная штука.
Эта всплывающая подсказка, как я понимаю, не количество, а относительные затраты, которые выражаются пока не ясно в чем?
И эти нули - это просто еще недопилили?
И, надеюсь, эти ужасные красные горизонтальные маркеры на всю ширину - временное явление.
Почитайте про разницу и преимущества профайлинга через семплинг и инструментацию.
Сейчас у нас семплинг без потери скорости на полностью оптимизированном коде программ, а раньше было встраивание счетчиков на полностью отключенной оптимизации. Поэтому раньше профайлинг врал на порядки, а сейчас показывает практически реальную картину потребления.
Поиграйтесь с новым профайлером и вы часто увидите, что пропадут практически все мелкие и средние функции - все они уйдут в агрессивный инлайнинг. Чтобы увидеть их, воспользуйтесь новой настройкой отключения инлайнинга в профилировке.
С визуальным дизайном будем дальше экспериментировать, но это достаточно удобно получилось. Аналогично в Visual Studio 2019.