¡Necesito ayuda! No puedo resolver el problema, me encuentro con limitaciones de hardware - página 18

 

Script de prueba y resultados de la ejecución.

DISCO DURO:

2014.08.22 21:16:43.584 sTest_ReadWriteBIN EURUSD,M1: 100000 secuences writed in 39.8 sec
2014.08.22 21:17:24.174 sTest_ReadWriteBIN EURUSD,M1: 4156 Mb loaded in 40.0 sec (103.9 MB/sec)

Unidad RAM:

2014.08.22 21:22:15.170 sTest_ReadWriteBIN EURUSD,H1: 100000 secuencias de escritura en 27,6 segundos
2014.08.22 21:22:42.805 sTest_ReadWriteBIN EURUSD,H1: 4158 Mb cargados en 27,6 seg(150,4 MB/seg)

Todavía no es impresionante. Es cierto que las condiciones de prueba no son precisamente limpias en este momento, con un montón de cosas funcionando en el ordenador.

Lo haré de nuevo más tarde.

Archivos adjuntos:
 
komposter:
Sospecho que se puede cambiar la lectura por el análogo WinAPI y obtener un aumento de velocidad de al menos 2-3 veces para el disco RAM
 
komposter:

TheXpert:
Por cierto, si conoces el punto de partida de cada secuencia, puedes buscar las fechas deseadas con una búsqueda binaria, ya que las operaciones están ordenadas por tiempo.

+1, gracias por la idea.

También podría aplicar la búsqueda por interpolación, que probablemente funcionaría aún más rápido en esta tarea.
 
TheXpert:
Sospecho que sustituirá la lectura por el análogo de WinAPI y obtendrá una ganancia de velocidad de al menos 2-3 veces para el disco RAM

Sólo FileOpen se supone que es lento, mientras que la lectura debe ser rápida. Pero lo comprobaré.

anónimo:
También puede aplicar la búsqueda por interpolación, que probablemente sea aún más rápida en esta tarea.

Genial, gracias.

 
komposter:
...

Todavía no es impresionante.

...

En C++ se hace mediante fread a un buffer de 64K-128K, parsear con tu propio parser es mejor, porque los sscanf-types son muy lentos.
 
kazakov.v:
En C++ esto se hace mediante fread a un buffer de 64K-128K, el parsing es mejor con tu propio parser, porque los sscanfs son muy lentos.

En C++ se puede hacer sin parser si:

empujando la idea 10 veces - iniciar otro archivo con los valores de las posiciones de inicio de las secuencias en otro archivo, entonces usted ni siquiera necesita para almacenar el número de transacciones en la estructura de la secuencia.

 
marketeer:
Dado que el problema es más bien académico (parece una pregunta para contratar a un programador) y muchos han expresado su interés en él, ¿por qué no formularlo más estrictamente en términos de formato de descripción de los datos de entrada, y todo el mundo podría generar 20 gigas de datos de prueba y presentar su solución práctica?

+100

La tarea no es trivial, pero todavía no hay una sola línea de código. Andrey, aquí hay mucha gente interesada: formula la tarea, ofrece datos de prueba. Hagamos una programación deportiva.

 
C-4:

+100

La tarea no es trivial, pero todavía no hay una sola línea de código. Andrey, aquí hay mucha gente interesada: formula la tarea, ofrece datos de prueba. Hagamos una programación deportiva.

La tarea ya está hecha.
 
Vinin:
La tarea ya está hecha.
Necesita datos de prueba + pseudocódigo, con principios generales de manejo de datos.
 
¿Por qué pasar por las opciones de la base de datos? ¿No sería mejor generar ofertas a partir del historial según los criterios?