
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На картинке TotalCPU и SelfCPU (> 25%) приходятся на одну строку. Как это объяснить?
На картинке TotalCPU и SelfCPU (> 25%) приходятся на одну строку. Как это объяснить?
Оптимизация кода с пропаданием промежуточных строк и вычислений.
Оптимизация кода с пропаданием промежуточных строк и вычислений.
Этой фразой можно объяснить все, что угодно.
Этой фразой можно объяснить все, что угодно.
это значит - будь уверен все нормально.
Ренату нужно профессионального пресс-конферента)
Этой фразой можно объяснить все, что угодно.
Я не один раз писал в ключе "Исходный код вашей программы для оптимизатора - лишь идея".
Компиляторы давно уже не смотрят на код как на приказ. И скоро еще умнее будут.
Для желающих попрактиковаться: https://godbolt.org/ - онлайновый эксплорер компилеров. Можно брать свои функции/микропрограммы и исследовать, до какого состояния разные компиляторы увечат код.
Учтите, что надо запастись большим списком ключей каждого компилятора, чтобы увидеть разницу кодогенераторов. Особо важно для AVX/AVX2 вариантов.
Невозможно пользоваться профайлером. Аргументация ниже.
Запускаю в Тестере в профилировщике (inline отключен) советник.
Показывает, что десятки процентов TotalCPU приходится на одну из функций, которая не должна вызываться.
Ну мало ли я ошибся? Ставлю туда BreakPoint и запускаю Debug в тестере. Не срабатывает!
Профилировщик врет! Никого не знаю, кто был бы им доволен. Почти все плюются.
Пытаюсь понять, почему новая версия функции медленнее старой в пять раз. Профилировщик не в состоянии помочь решить такую элементарную задачу !
Давайте не будем обманывать друг друга и скажем прямо, что текущая реализация - ни в какие ворота. Просьба, верните рабочий инструмент в MT5 - профилировщик MT4.
Профилировщик работает правильно.
Просто вы все еще не можете отказаться от принципа "строки исходного кода имеют четкое соответствие в нативном результате". А они давно уже не имеют.
Вы не верите в оптимизирующие компиляторы, потому как не знаете его основ. Плюс вы не верите словам разработчиков.
Замерять нужно исключительно в режиме максимальной оптимизации, иначе это самообман. Замерять нужно реальные программы с достаточным объемом прогонов и практически никогда простые быстрые синтетические примеры.
Но я поддерживаю вас. Сам мучаюсь с профилировщиком MSVC/CLang, постоянно проверяя ассемблерный код и переписывая, дабы улучшить конвееризацию и спрямить выполнение. Как и у вас - малое совпадение с реальным подстрочником и множество смешанных от инлайна и реордера счетчиков.
Как обычно, технические вопросы должны решаться с полной технической выкладкой и четко заявленными вопросами.
Сейчас прогнал профайлер на большом проекте и появились вопросы. В понедельник будем разбираться.Как обычно, технические вопросы должны решаться с полной технической выкладкой и четко заявленными вопросами без открытых ворот.
Не буду этого делать. Ветка в одни ворота.
просто никто не понял в чем его задача сейчас,
все же просто там, невидимый таймер делает стоп и куда он чаще попадает надо смотреть что там, легкая строка или тяжелая функция
отличие от старого функционала, что этот нужно подольше подержать в запуске
add
если функция тяжелая и часто вызывается, в нее и будет постоянно ударять таймер, смотрим значит что можно с ней сделать
Идеальный результат - что то типа проверка рабочего времени, у меня там профайлер постоянно показывает остановки