Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 15
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
если ArrayCopy() сделан по принципу Сишного memmove(),
тогда,думаю, что скорость ArrayCopy() зависит от скорости распределения памяти, если память промежуточного буфера для копирования готова, то ArrayCopy() будет очень быстро выполнен, если память не распределена, то начнутся запросы в операционку для выделения памяти
можно попробовать потестить - сделать один вызов ArrayCopy() с большим обьемом данных, тем самым подготовив память буфера для обмена, и следом сделать цикл с ArrayCopy() с меньшими обьемами данным для копирования и с замером скорости
В нашем текущем примере копирование выполняется в статический массив, а так вообще интересно конечно, когда ArrayCopy работает медленнее простого for. Распределять память если нужно все равно придется хоть так хоть эдак.
В нашем текущем примере копирование выполняется в статический массив, а так вообще интересно конечно, когда ArrayCopy работает медленнее простого for. Распределять память если нужно все равно придется хоть так хоть эдак.
не принципиально статический или динамический, мы не знаем, как реализована ArrayCopy() , я предположил лишь, что это "обертка" над стандартными Сишными ф-циями, memmove() обычно работает через доп.буффер... ну как обычно, так писали раньше, сложно сказать как и какой компилятор работает
ЗЫ: я просто тестировать скорость выполнения на MQL не умею ((( - пару раз пробовал, вроде из справки примеры брал, почему то результаты сильно отличаются, ну и за ненадобностью забил на этот вопрос - не тестирую производительность, в профилировщике обычно смотрю, что и как выполняется по времени
я просто тестировать скорость выполнения на MQL не умею ((( - пару раз пробовал, вроде из справки примеры брал, почему то результаты сильно отличаются, ну и за ненадобностью забил на этот вопрос - не тестирую производительность, в профилировщике обычно смотрю, что и как выполняется по времени
вот самый простой способ, который я выше использовал
вот самый простой способ, который я выше использовал
спс, забрал, завтра по тестирую
Да, вот это будет работать сильно быстрее (заменил for где можно на ArrayCopy, остальное то же самое):
Я же говорю, что написал первое, что пришло в голову без тестов))
Этот вариант ничем не отличается от моего. Замеры (берется минимальное время из 10 попыток) это подтверждают.
Видно, что вариант с циклом быстрее, т.к. цикл из 60 /4 = 15 элементов.
Этот вариант ничем не отличается от моего.
Видимо да, только тип структуры и тип массива произвольные.
Видно, что вариант с циклом быстрее, т.к. цикл из 60 /4 = 15 элементов.
Странно, что у меня с тем же MqlTicks и int получился быстрее ArrayCopy...
Странно, что у меня с тем же MqlTicks и int получился быстрее ArrayCopy...
Запускаю в MT5x64.
Видимо да, только тип структуры и тип массива произвольные.
Специально обходил общий случай, чтобы больше людей могли поучаствовать.
Пока так
Запускаю в MT5x64.
Специально обходил общий случай, чтобы больше людей могли поучаствовать.
Пока так
Видимо, у Вас уже быстрее :)
Туда ещё кучу служебного кода нужно добавить для доведения функционала до того же ArrayCopy (source start, dest start, count) и проверки на корректность параметров...
А вообще у Вас столько крутых работ/библиотек, что странно, что Вы спрашиваете и обсуждаете лучшее решение на форуме :)
странно, что Вы спрашиваете и обсуждаете лучшее решение на форуме :)
Мне для HistoryTicks-библиотеки нужно. Спасибо, что участвуете.