Características del lenguaje mql5, sutilezas y técnicas - página 53
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
El resultado
250 veces más rápido, ¡y eso no es el límite!
HH El hecho marcado en rojo no se puede explicar de ninguna manera.
Cómo sumar rápidamente muchas cadenas (por ejemplo, generar un informe comercial en cadena)
El resultado
250 veces más rápido, ¡y eso no es el límite!
ZS El rojo marca un hecho que no se puede explicar de ninguna manera.
La peculiaridad del pool de memoria, cuando se llama a SumString2 por primera vez, el pool de memoria está "saturado" de memoria del sistema, la segunda vez, la memoria ya no se solicita al sistema.
Recomiendo corregir SumString1
El pool de memoria es especial, la primera vez que se llama a SumString2 al pool de memoria se "satura" con memoria del sistema, la segunda vez no se vuelve a pedir memoria al sistema.
Recomiendo corregir SumString1
Gracias. Podrían reflejar la noción de un buffer de recepción al menos de alguna manera en la Ayuda. Ahora mismo sólo hayStringBufferLen cuya descripción no dice nada.
Gracias. Podrían explicar el concepto de buffer de recepción al menos de alguna manera en la Ayuda. Ahora mismo sólo existe StringBufferLen, cuya descripción no tiene ningún sentido.
Está bastante claro, estamos hablando de la memoria asignada para el encadenamiento. Es que la explicación de Elías sobre la "saturación de la memoria del sistema" es algo confusa )
Por cierto, tampoco sabía de esa característica, que una variable local utiliza la memoria previamente asignada. Así que resulta que no tiene mucho sentido hacer tu propia optimización, a menos que estemos hablando de un solo cálculo pesado. El tema de la liberación de esta memoria tampoco está claro. ¿Se libera durante el tiempo de ejecución o sólo durante la desinicialización?
Está claro, estamos hablando de la memoria asignada para la cadena. Es que Ilya lo explica de forma muy complicada sobre la "saturación de la memoria del sistema". )
Por supuesto, es comprensible cuando Ilya citó el código. Por desgracia, la Ayuda no dice nada al respecto.
Por cierto, yo tampoco conocía esta característica específica: una variable local utiliza la memoria asignada anteriormente. Así que resulta que no tiene mucho sentido crear una optimización propia a menos que se trate de un solo cálculo pesado.
Acabo de enfrentarme a un caso de este tipo en el que he tardado segundos en formar una cadena. Pero después de la optimización me tomó milisegundos. Pero la variante de Ilya es, por supuesto, la más rápida. Si mi ayuda fuera perfecta, no lo habría hecho.
Por supuesto, es comprensible cuando Ilya dio el código. Lamentablemente, no hay ninguna palabra al respecto en la Ayuda.
Acabo de encontrarme con un caso de este tipo en el que se tardó segundos en formar una cadena. Pero después de la optimización se hizo en milisegundos. Pero la variante de Ilya es, por supuesto, la más rápida. Si nuestra ayuda fuera ideal, no lo habría hecho.
Bueno, hablando de StringInit, se sabe desde hace mucho tiempo. Yo también lo uso siempre para grandes cantidades. Si no sé la longitud exacta de las líneas que hay que añadir, utilizo la longitud aproximada.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bibliotecas: TesterBenchmark
fxsaber, 2017.08.15 19:31
ZS2 ¿Qué pasa con los frenos en 1648 en la primera pasada de cada paquete? En 1643 era así.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Características del lenguaje mql5, sutilezas y trucos
fxsaber, 2017.08.15 17:16
En la primera pasada de un paquete de trabajo de Agente (por ejemplo, una sola ejecución de probador), el tiempo entre la ejecución del EA y el primer evento NewTick puede tardar unos segundos. En las siguientes pasadas del paquete, este tiempo es cero.
En el probador, IsStopped() siempre devuelve cero(no falso). Por lo tanto, es erróneo esperar que esta bandera interactúe con ExpertRemove() como en el mundo real en el probador.
La primera línea se ejecuta más rápido que la segunda con idénticos resultados.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bibliotecas: TesterBenchmark
fxsaber, 2017.09.05 09:36
Sustituir estúpidamente PositionSelect por PositionGetTicket aumenta la velocidad de backtest en un 7%.