Новая версия платформы MetaTrader 5 build 5100: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса - страница 38

 
Forester #:

Сейчас видимо только в цикле с преобразованием через union каждого элемента можно такое сделать?

Если каждого, то медленно. Пачкой реализовано здесь.

// Быстрый кастинг массивов.
#include <fxsaber\TradeTransactions\Convert.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{
  float Array1[] = {1, 2, 3};
  uchar Array2[];

  CONVERT::ArrayToArray(Array1, Array2);
  ArrayPrint(Array2);
}
Либо через DLL.
 
fxsaber #:

Если каждого, то медленно. Пачкой реализовано здесь.

Либо через DLL.

беглым просмотром увидел ArrayCopy -  это не так быстро, как со свопом.

 
Forester #:

беглым просмотром увидел ArrayCopy -  это не так быстро, как со свопом.

В случае сброса на диск ZIP-архива скорость не нужна.

 
fxsaber #:

В случае сброса на диск ZIP-архива скорость не нужна.

У меня сейчас 200Гб файлов - это часы с SSD диском... так что даже экономия в 20% - уже существенно
 
Forester #:
У меня сейчас 200Гб файлов - это часы с SSD диском... так что даже экономия в 20% - уже существенно

ArrayCopy переварит 200 гигов за несколько секунд. На фоне тормозов SSD это ни о чем.

 
fxsaber #:

У меня сильно не совпадает потребление F2-памяти с TERMINAL_MEMORY_USED.

Где ошибка?

Ошибки нет.

MQL5 показывает размеры заявленных/виртуальных буферов/кешей, которые не были закомичены/взяты по факту. Терминал в таск менеджере показывает фактически забранную/commited у операционки память.

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

В MQL5 мы этого не делаем и не планируем. Достаточно показывать virtual space.

 
В MetaTrader показать\скрыть навигатор Ctrl+N, почему в MetaEditor это Ctrl+D? Почему нельзя переназначить горячие клавиши? 
 

В документации по StringSubstr было бы правильно описать такую важную фичу, что параметр start_pos может быть отрицательным и тогда функция вычленяет подстроку с обратным отсчетом от конца.

Это полезно, но без этого знания получается, что код работает неожиданным образом - предполагалась генерация ошибки и пустая подстрока, а функция молча и без ошибок возвращает другой фрагмент исходной строки из конца.

Обнаружить такую ошибку в рантайме - весьма затруднительно. 

 
bild 5111
Дополнительные задержки в таймере на Windows7 все еще есть(
2025.06.13 21:02:46.131    7) Work time: 6999 ms
2025.06.13 21:02:46.131    start timer
2025.06.13 21:02:53.235    OnTimer via 7103 ms
2025.06.13 21:03:01.226    8) Work time: 7990 ms
Надеюсь вы еще поддерживаете Win7.
 
Хорошо бы добавить в редактор кода подсветку всех вхождений выделенного слова.
В Notepad++ это очень удобно - сразу видишь все места использования переменной или функции. У вас приходится поиском искать ((