Вопросы по ООП в MQL5 - страница 66

 

А вот ответ почему:

В красном прямоугольнике - добавил по одному вызову GetMicrosecondCount(), в синем - еще по одному. Вот оно поэтому почти сравнялось. 

 
Dmitry Fedoseev:

А чего код сцышься показать? Без кода свои картинки с временем можешь засунуть себе туда куда солнце не светит.

 
Vladimir Simakov:

Упс. При идентичных действиях, разница всего 30% получилась.

Возможно это именно в классах оверхед создаётся? Надо попробовать со структурами.  Но вообще конечно компилятор должен в любом случае всё инлайнить и вырезать лишнее. Есть смысл указать разработчикам на этот момент.
 
Alexey Navoykov:
Возможно это именно в классах оверхед создаётся? Надо попробовать со структурами.  Но вообще конечно компилятор должен в любом случае всё инлайнить и вырезать лишнее. Есть смысл указать разработчикам на этот момент.

Сработало. Структура на той же скорости сработала, что и функция и макрос. А вот класс... далеко сзади. 

 
Dmitry Fedoseev:

Сработало. Структура на той же скорости сработала, что и функция и макрос. А вот класс... далеко сзади. 

В принципе у меня всегда и было такое предчувствие, только всё руки не доходили протестить. Поэтому без необходимости старался не объявлять класс, а объявлял его структурой, тем более если по смыслу предполагается передавать его в стеке.
 

давал советы как в СБ достучаться до приватных методов/полей и сам этот хук почерпнул на форуме, уже не помню кто подсказал

с удивлением узнал, что я давал советы как всегда не придерживаясь терминологии, это не хук, а антипаттерн Public Morozov http://blog.kislenko.net/show.php?id=1775

)))

 
Igor Makanu:

давал советы как в СБ достучаться до приватных методов/полей и сам этот хук почерпнул на форуме, уже не помню кто подсказал

с удивлением узнал, что я давал советы как всегда не придерживаясь терминологии, это не хук, а антипаттерн Public Morozov http://blog.kislenko.net/show.php?id=1775

)))

вот ты задарил бочку мёда отрицателям паттернов и нелюбителям ОО :-) Паттерн чтобы получить то что скрыто по проектным соображениям..:-)

Некто (кто-то из нынешних монстров ОО/C++), весьма разумно говорил что затыка ОО это что базовый класс должен предоставлять достаточные интерфейсы для всех вариаций потомков (практически иметь доступные сеттеры-геттеры ко всем поля, или всё-в-паблик),
а потомкам нельзя создавать виртуальных функций вне протокола родителя, только тогда наступает всеобщее щастье. Тогда обобщённые STL+boost реально спасают, тесты полезны и реюзабельны. Но становится сильно много классов, потому как вместо новых виртуальных функций выступают всякие прокси.

 
Maxim Kuznetsov:

вот ты задарил бочку мёда отрицателям паттернов и нелюбителям ОО :-) Паттерн чтобы получить то что скрыто по проектным соображениям..:-)

Некто (кто-то из нынешних монстров ОО/C++), весьма разумно говорил что затыка ОО это что базовый класс должен предоставлять достаточные интерфейсы для всех вариаций потомков (практически иметь доступные сеттеры-геттеры ко всем поля, или всё-в-паблик),
а потомкам нельзя создавать виртуальных функций вне протокола родителя, только тогда наступает всеобщее щастье. Тогда обобщённые STL+boost реально спасают, тесты полезны и реюзабельны. Но становится сильно много классов, потому как вместо новых виртуальных функций выступают всякие прокси.

А причем тут паттерны и нелюбители OO (очков)?

 
Maxim Kuznetsov:

Некто (кто-то из нынешних монстров ОО/C++), весьма разумно говорил что затыка ОО это что базовый класс должен предоставлять достаточные интерфейсы для всех вариаций потомков (практически иметь доступные сеттеры-геттеры ко всем поля, или всё-в-паблик)

Не знаю, что за "монстр" говорил такую ерунду.  Он видимо сторонник того, чтобы в один класс впихнуть всё впихуемое и невпихуемое:  "...и жнец, и на дуде игрец".
 
Кстати, касаемо "антипаттернов".  Например, почти вся стандартная библиотека MQ - один сплошной антипаттерн )