Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5 - página 20

 
Алексей Тарабанов:

¿El resultado de qué?

Las velocidades
 
fxsaber:

La multiplicidad es la condición del problema.

Simple, ¿un rompecabezas?

 
Алексей Тарабанов:

Simplemente, ¿un rompecabezas?

Aplicaciones prácticas

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nueva versión de MetaTrader 5 build 1930: Ventanas de gráficos flotantes y bibliotecas .Net en MQL5

fxsaber, 2018.12.09 00:18

Este ejemplo se ejecuta ahora 15 veces más rápido

1000000
Time[TestResource()] = 286646


A grandes rasgos, el ciclo completo de escritura/lectura a través del recurso funciona a 4 millones de ticks por segundo.


Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Discusión sobre el artículo "Multithreaded asynchronous WebRequest in MQL5 with your own hands

fxsaber, 2018.12.09 00:52

Prueba el Resource_Data.mqh actualizado, los retrasos en la transferencia de la página web deberían desaparecer.

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define  BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime = GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}  

const RESOURCEDATA<uchar> Resource("::" + __FILE__); // Ресурс для передачи данных (байты)
uchar BytesIn[];
const int Init = ArrayResize(BytesIn, 1000000);

void TestResource()
{
  uchar BytesOut[];

  Resource = BytesIn;
  Print(Resource.Get(BytesOut));
}

void OnStart()
{
  BENCH(TestResource());
}


Versión antigua

1000000
Time[TestResource()] = 103746


Nueva versión

1000000
Time[TestResource()] = 5222
 
Ilya Malev:

¿Existe una comparación de la velocidad de ordenación con el ArraySort normal incorporado en el muestreo aleatorio? Cualquier método que ordene los datos aleatorios más rápido en promedio...

O no más rápido, pero al menos igual. O no tan rápido, pero al menos no más del doble de tiempo. Sin ninguna Dll y otras cosas como el multithreading

Hay un código fuente, puede medirlo usted mismo.

 
Lazybones.
 
Nikolai Semko:
No se puede pasar.
Me aseguraré de participar cuando llegue al ordenador.
Tras un rápido vistazo, ya tengo ideas sobre cómo mejorar los resultados en un 10-20%.

Me temo que ya está atascado en el máximo rendimiento.

 
fxsaber:

Me temo que ya estamos encerrados en el máximo rendimiento.

Tal vez haya algo que no haya notado. Pero si sólo se utiliza un tipo de unión, todavía hay potencial.
 
Nikolai Semko:
Puede que haya algo en lo que no me haya fijado. Pero si sólo se utiliza un tipo de unión, todavía hay potencial.

Me alegro de estar equivocado.

 
Алексей Тарабанов:
Lazybones.
Apestas a alcohol. Deje de beber, camarada teniente coronel.
 
fxsaber:

Me alegro de estar equivocado.

Ya está en camino. Puede probarlo usted mismo. La idea es utilizar uniones con matrices de estructuras de diferentes tamaños, por ejemplo 10, 100, 1000, 10000...
Esto acortará el bucle en órdenes de magnitud y reducirá el número de llamadas a ArrayCopy en órdenes de magnitud.
Esto debería estar cerca de la variante de memcopia