Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
ArrayInitialize(ar,Z); // промежуточный массив размер массива ar = 1000 ArrayCopy(arr,ar,5000); // основной массив заполняется значением Z c 5000 по 5999 элемент
Muchos comerciantes dirán que por qué es tan complicado, que puede ser más sencillo:
ArrayFill(arr,5000,1000,Z);
Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia se ejecuta notablemente más rápido que la segunda
2018.09.0411:01:17.222 TestArrayFill (EURUSD,M4) Время заполнения через ArrayFill = 3382018.09.0411:01:17.222 TestArrayFill (EURUSD,M4) Время заполнения через ArrayInitialize + ArrayCopy = 1112018.09.0411:01:18.563 TestArrayFill (EURUSD,M4) Время заполнения через ArrayFill = 3012018.09.0411:01:18.563 TestArrayFill (EURUSD,M4) Время заполнения через ArrayInitialize + ArrayCopy = 1222018.09.0411:01:19.717 TestArrayFill (EURUSD,M4) Время заполнения через ArrayFill = 3342018.09.0411:01:19.717 TestArrayFill (EURUSD,M4) Время заполнения через ArrayInitialize + ArrayCopy = 1422018.09.0411:01:21.095 TestArrayFill (EURUSD,M4) Время заполнения через ArrayFill = 3642018.09.0411:01:21.095 TestArrayFill (EURUSD,M4) Время заполнения через ArrayInitialize + ArrayCopy = 156
Ya escribí sobre este tema a CA hace un par de años. Recibí una respuesta diciendo que había encontrado y solucionado el problema y que estaría bien en la siguiente compilación.
Pero el problema persiste.
Tengo la misma prueba en MT4:
2018.09.0411:08:21.258 TestArrayFill EURUSD,H1: Время заполнения через ArrayInitialize + ArrayCopy = 1132018.09.0411:08:21.258 TestArrayFill EURUSD,H1: Время заполнения через ArrayFill = 78
Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
Muchos comerciantes dirán que por qué es tan complicado, que puede ser más sencillo:
Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia se ejecuta notablemente más rápido que la segunda
Ya escribí sobre este tema a CA hace un par de años. Recibí una respuesta diciendo que había encontrado y solucionado el problema y que estaría bien en la siguiente compilación.
¡Qué peculiaridad y sutileza! La importante función estándar de trabajar con matrices en el lenguaje de negociación algorítmica más rápido del mundo es 4 veces más lenta que en el obsoleto lenguaje MQL4. Sólo aquí.
Es un claro bogey. ¿Se imaginan cuántos programas van a fallar cuando se arregle?
¡Qué peculiaridad y sutileza! La importante función estándar de trabajar con matrices en el lenguaje de negociación algorítmica más rápido del mundo es 4 veces más lenta que en el anticuado lenguaje MQL4. Sólo aquí.
Es un claro bogey. ¿Se imaginan cuántos programas se verán afectados cuando se arregle?
Sí, probablemente he planteado el problema de forma incorrecta. Parecía que estaba hablando de su solución.
Por supuesto que no. Estaba tratando de formular el problema. La opción de la matriz intermedia no es en absoluto una solución al problema, ya que tarda más en ejecutarse de lo que debería basándose en la lógica de la memoria, y además conlleva un consumo de memoria adicional.
Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
Muchos dirán que por qué es tan complicado: puede ser más sencillo:
Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia funciona mucho más rápido que la segunda
No lo entiendo. ¿Por qué necesitas llenar parte de un gran array con un único valor Z? O, ¿qué datos asignas al array, con qué propósito? ¿Valores de cierre, AVG, RSI? ¿Pero no están presentes en la memoria de MetaTrader después de cargar el indicador? Estuve jugando con la matriz 0 y 1 y finalmente obtuve la palabra SOS, es decir, asigné el valor 0 a S y el 1 a O. Por supuesto, podría introducir Help para obtener un mejor resultado en el segundo tamaño de la matriz. A continuación, comprueba el tiempo de llenado para el tamaño de cada matriz. Luego suma todo y divide por 4.
Bob1Thec: No puedo entenderlo. ¿Por qué necesitas llenar parte de un gran array con un único valor Z? O, ¿qué datos asignas al array, con qué propósito?
El fondo monocromático (incluyendo la transparencia) de una imagen se hace de esta manera.
Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
Muchos comerciantes dirán que por qué es tan complicado, que puede ser más sencillo:
ArrayFill(arr,5000,1000,Z);Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia se ejecuta notablemente más rápido que la segunda
Ya escribí sobre este tema a CA hace un par de años. Recibí una respuesta diciendo que había encontrado y solucionado el problema y que estaría bien en la siguiente compilación.
Pero el problema persiste.
Tengo la misma prueba en MT4:
Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
Muchos comerciantes dirán que por qué es tan complicado, que puede ser más sencillo:
Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia se ejecuta notablemente más rápido que la segunda
Ya escribí sobre este tema a CA hace un par de años. Recibí una respuesta diciendo que había encontrado y solucionado el problema y que estaría bien en la siguiente compilación.
Pero el problema persiste.
Tengo la misma prueba en MT4:
Tal vez este sea un buen lugar para comprobarlo.
Tal vez este sea un buen lugar para comprobarlo.
¡Qué peculiaridad y sutileza!
Es un claro bogey.La importante función estándar de trabajar con matrices en el lenguaje de negociación algorítmica más rápido del mundo es 4 veces más lenta que en el obsoleto lenguaje MQL4.
Sólo aquí.
¿Se imaginan cuántos programas van a fallar cuando se arregle?
¡Qué peculiaridad y sutileza!
Es un claro bogey.La importante función estándar de trabajar con matrices en el lenguaje de negociación algorítmica más rápido del mundo es 4 veces más lenta que en el anticuado lenguaje MQL4.
Sólo aquí.
¿Se imaginan cuántos programas se verán afectados cuando se arregle?
Bien.
Pero, como característica actual, ¿es algo malo?Bien.
Pero, como característica actual, ¿es algo malo?Bien.
Pero, como característica actual, ¿es algo malo?Una anécdota.
Un anciano va al médico. Dice:
- Doctor, me duele la espalda.
- Inclínate. ¿Duele?
- Duele.
- ¡Inclínate más!
- Ya está, eso se siente mejor...
- ¡Allí! ¡Así es como se camina!
)))))
Cuando necesito rellenar una parte de un array grande con un único valor Z, utilizo la construcción
Muchos dirán que por qué es tan complicado: puede ser más sencillo:
Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia funciona mucho más rápido que la segunda
No puedo entenderlo. ¿Por qué necesitas llenar parte de un gran array con un único valor Z? O, ¿qué datos asignas al array, con qué propósito?
El fondo monocromático (incluyendo la transparencia) de una imagen se hace de esta manera.
más precisamente un fondo degradado
más precisamente un fondo degradado
No tengo ni idea de qué juega aquí el llenar un array con un solo valor.