Объявление переменных за циклом или внутри цикла? - страница 3

 
Aleksandr Matveev:

У меня есть подозрение, что автор сего высказывания вообще не в курсе, как работает процессор, память и компилятор... 

Помоему автор этого коммента на столько не внимателен, что не понял сути вопроса

Причем тут память и процессор, вопрос был про оптимизацию в MQL5, внимательнее читать надо

P.S. Почитайте на досуге занимательную книжечку " Техника развития внимания, Андреев О.А., 2007"

Техника развития внимания, Андреев О.А., 2007
Техника развития внимания, Андреев О.А., 2007
  • 2018.04.27
  • nashol.com
Смотреть, читать и скачать бесплатно pdf, djvu и купить бумажную и электронную книгу по лучшей цене со скидкой: Техника развития внимания, Андреев О.А., 2007. Настоящая книга написана по Программе интеллектуального и духовного развития личности Школы Олега Андреева. Она посвящена тренировке внимания. Можно использовать книгу как часть Программы или как самостоятельное пособие по технике развития внимания. Настоящее издание является более полным, чем предыдущие, включает новые материалы для самостоятельной работы. Информация изложена в виде восьми уроков. Каждый содержит теоретический раздел, упражнения и инструкции к
 
pivalexander:

Причем тут память и процессор, вопрос был про оптимизацию в MQL5, внимательнее читать надо

То есть по вашему тот код не использует ни память, ни процессор? И я ответил на высказывание про компиляторы " Чтобы переплюнуть оптимизации современных компиляторов - это надо очень сильно постараться."

 
Aleksandr Matveev:

У меня есть подозрение, что автор сего высказывания вообще не в курсе, как работает процессор, память и компилятор... Готов поспорить, что любой ваш код можно ускорить минимум в десятки раз, а то и в сотни. 

Так попробуйте для начала доказать это в отношении обсуждаемого кода.   Более того, если верить результатам выше, которые привёл Игорь, то получается то всё наоборот.  Объявление внутри цикла работает чуть быстрее.

Так что все эти пляски и шаманства в попытках переиграть компилятор в итоге выходят себе дороже. Компилятору становится сложнее оптимизировать код.    Когда переменная объявлена за пределами блока, то она считается внешней, сохраняющей своё состояние между итерациями.  А значит компилятор ограничен в возможностях её оптимизации.  Чистый код всегда оптимизируется лучше, чем "грязный" (имеющий побочные эффекты),  если вы знакомы с парадигмой функционального программирования.

 
Alexey Navoykov:

Так попробуйте для начала доказать это в отношении обсуждаемого кода.   Более того, если верить результатам выше, которые привёл Игорь, то получается то всё наоборот.  Объявление внутри цикла работает чуть быстрее.

Так что все эти пляски и шаманства в попытках переиграть компилятор в итоге выходят себе дороже. Компилятору становится сложнее оптимизировать код.    Когда переменная объявлена за пределами блока, то она считается внешней, сохраняющей своё состояние между итерациями.  А значит компилятор ограничен в возможностях её оптимизации.  Чистый код всегда оптимизируется лучше, чем "грязный" (имеющий побочные эффекты),  если знакомы с парадигмой функционального программирования.

Почитайте на досуге все-таки предложенную мной книгу, думаю много нового узнаете про компиляторы.

 
Alexey Navoykov:

Так попробуйте для начала доказать это в отношении обсуждаемого кода.   Более того, если верить результатам выше, которые привёл Игорь, то получается то всё наоборот.  Объявление внутри цикла работает чуть быстрее.

Так что все эти пляски и шаманства в попытках переиграть компилятор в итоге выходят себе дороже. Компилятору становится сложнее оптимизировать код.    Когда переменная объявлена за пределами блока, то она считается внешней, сохраняющей своё состояние между итерациями.  А значит компилятор ограничен в возможностях её оптимизации.  Чистый код всегда оптимизируется лучше, чем "грязный" (имеющий побочные эффекты),  если вы знакомы с парадигмой функционального программирования.

Мой тест показывает обратное, код с объявлением переменной за циклом работает быстрее

https://www.mql5.com/ru/forum/320307/page2#comment_12886814

Объявление переменных за циклом или внутри цикла?
Объявление переменных за циклом или внутри цикла?
  • 2019.08.18
  • www.mql5.com
или Есть ли разница? с учетом всех оптимизаций компилятора mql5...
 
pivalexander:

Запускал много раз, результат стабилен, код с объявлением переменной за циклом, работает быстрее

Странно, а чуть ранее у человека получились обратные разультаты
 
pivalexander:

Мой тест показывает обратное, код с объявлением переменной за циклом работает быстрее

У вас результат, полученный внутри цикла, никак не используется. Результатам таких пустых тестов нельзя верить. Компилятор мог просто вырезать всё тело цикла в одно из случаев.
 
Alexey Navoykov:
Странно, а чуть ранее у человека получились обратные разультаты

Хватит уже флудить, матчасть сначала освойте, а потом уже доказывайте свою правоту. Вам результат был бы понятен без каких-либо тестов, если бы вы как минимум прочитали хоть одну книжку по работе процессора и памяти. Я вам предложил самую гениальную из них, если вы захотите немого продвинутся в программировании, то вы ее обязательно прочитаете.

 
Alexey Navoykov:
Странно, а чуть ранее у человека получились обратные разультаты

Я уже говорил, что такой тест скорости на искуственном примере вообще не показателен. Разве недостаточно моих исследований под отладчиком? Мне нет доверия? Все проигнорили.  Дело хозяйское, я выхожу.

 
Alexey Navoykov:

 Более того, если верить результатам выше, которые привёл Игорь, то получается то всё наоборот. 

я сам себе не верю, всегда перепроверяю, думаю не стоит Вам мою самооценку поднимать... случаи в истории разные были, щас найду наполеонку и понеслась! ))))


Alexey Navoykov:
Странно, а чуть ранее у человека получились обратные разультаты

не странно, нужно уметь тестировать простейшие операторы и операции в MQL - ну вот на  кой я я добавил в свой тест srand(GetTickCount()) ?

;)

Причина обращения: