![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Получил неожиданный результат.
имхо, тесты не сопоставимые
STRUCT2 имеет конструктор
STRUCT2 имеет строки
про строки нет документации как реализованы в MQL, обсуждали https://www.mql5.com/ru/forum/1111/page2732#comment_16181920
т.е. в Вашем тесте STRUCT2 работает как класс с конструктором, в котором находится " класс string " с конструктором , что по сути выделение памяти для обьекта несколько раз
думаю такой сложный тест нужно разбивать на несколько тестов - протестировать время создания структур STRUCT1 и STRUCT2 и потом время доступа к данным, кто то из разработчиков писал, что память у string выделяется лишь после обращения к string - у Вас в примере, string инициализирован вообще костантной строкой, сложно предположить как происходит инициализация - компилятор вообще мог не инициализировать массивы строк ( или не выделять память ? ) до обращения к ним
думаю такой сложный тест нужно разбивать на несколько тестов
Даже возиться не хочу. Сделал простые структуры.
По какой причине доступ к первому полю простой структуры зависит от ее размера - не понятно.
Даже возиться не хочу. Сделал простые структуры.
По какой причине доступ к первому полю простой структуры зависит от ее размера - не понятно.
Этот вопрос лучше задавать разработчикам в соответствующей ветке. С кодом теста. Либо объяснят, либо исправят, либо ничего не скажут... Здесь - наверняка только третий вариант.
Этот вопрос лучше задавать разработчикам в соответствующей ветке. С кодом теста. Либо объяснят, либо исправят, либо ничего не скажут... Здесь - наверняка только третий вариант.
У меня MT5 стал слишком много ненормативной лексики вызывать. Есть критические баги. Это - фигня.
Даже возиться не хочу. Сделал простые структуры.
сейчас одинаковые тесты STRUCT1 и STRUCT3
По какой причине доступ к первому полю простой структуры зависит от ее размера - не понятно.
тут только на кофейной гуще гадать
как вариант дождаться кого-нибудь, кто такой же тест сделает на С++ и покажет результаты, если будет большое расхождение, значит выделение памяти в MQL плохо реализовано
если тесты 1 и 2 будут примерно одинаковые, тогда это Винда так память выделяет
У меня MT5 стал слишком много ненормативной лексики вызывать. Есть критические баги. Это - фигня.
Желательно о всех багах сообщать. Критических и нет. Безэмоционально конечно :)
если тесты 1 и 2 будут примерно одинаковые, тогда это Винда так память выделяет
запустил последний тест 2 раза на
Terminal MetaTrader 5 x64 build 2470 started for MetaQuotes Software Corp.
2020.05.30 17:01:27.996 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 53: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:01:27.996 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:28.002 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:01:28.002 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:28.515 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 56: Func(Array1)] = 512 ms.
2020.05.30 17:01:28.515 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:30.734 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 57: Func(Array3)] = 2218 ms.
2020.05.30 17:01:30.734 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:41.278 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 53: ArrayResize(Array1,Amount)] = 2 ms.
2020.05.30 17:01:41.278 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:41.287 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 9 ms.
2020.05.30 17:01:41.287 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:41.840 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 56: Func(Array1)] = 552 ms.
2020.05.30 17:01:41.840 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:43.728 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 57: Func(Array3)] = 1888 ms.
2020.05.30 17:01:43.728 tst_f (EURUSD,H1) 1333106752
не все фалы прикреплены для скрипта, не скомпилировались последние строки
инклудник Debug.mqh у меня был
UPD: на старом билде запустил тест
2020.05.30 17:17:27.604 Terminal MetaTrader 5 - build 2361
2020.05.30 17:13:17.046 tst (EURUSD,H1) Alert: Time[tst.mq5 53: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:13:17.047 tst (EURUSD,H1) 50000000
2020.05.30 17:13:17.053 tst (EURUSD,H1) Alert: Time[tst.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:13:17.053 tst (EURUSD,H1) 50000000
2020.05.30 17:13:17.563 tst (EURUSD,H1) Alert: Time[tst.mq5 56: Func(Array1)] = 510 ms.
2020.05.30 17:13:17.563 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:19.416 tst (EURUSD,H1) Alert: Time[tst.mq5 57: Func(Array3)] = 1852 ms.
2020.05.30 17:13:19.416 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:28.971 tst (EURUSD,H1) Alert: Time[tst.mq5 53: ArrayResize(Array1,Amount)] = 2 ms.
2020.05.30 17:13:28.971 tst (EURUSD,H1) 50000000
2020.05.30 17:13:28.977 tst (EURUSD,H1) Alert: Time[tst.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:13:28.977 tst (EURUSD,H1) 50000000
2020.05.30 17:13:29.456 tst (EURUSD,H1) Alert: Time[tst.mq5 56: Func(Array1)] = 478 ms.
2020.05.30 17:13:29.456 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:31.192 tst (EURUSD,H1) Alert: Time[tst.mq5 57: Func(Array3)] = 1735 ms.
2020.05.30 17:13:31.192 tst (EURUSD,H1) 1333106752
Желательно о всех багах сообщать. Критических и нет. Безэмоционально конечно :)
Подробные ветки создал.
А попробуй их объявление местами поменять. Не зависит ли от того, какая из них наверху стека оказалась?
2020.05.30 17:33:07.892 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:33:07.955 tst_f (EURUSD,H1) 50000000
2020.05.30 17:33:07.957 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 55: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:33:07.957 tst_f (EURUSD,H1) 50000000
2020.05.30 17:33:09.902 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 58: Func(Array3)] = 1945 ms.
2020.05.30 17:33:09.902 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:33:10.353 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 59: Func(Array1)] = 450 ms.
2020.05.30 17:33:10.353 tst_f (EURUSD,H1) 1333106752