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
"Cuando se cierra un archivo, los datos se restablecen automáticamente en el disco, por lo que no es necesario llamar a FileFlush() antes de llamar a FileClose()" - Sí, sí, empiezo a ver de qué hablabasargazo. Entonces, ¿resulta que en lugar de FileClose() se puede llamar a FileFlush() para garantizar que se guarda el último registro en el archivo? ¿Y esto sería una solución inteligente?
no en lugar de, sino por necesidad.
Flush - restablece los datos restantes, y NO cierra el archivo. Esto es lo que quieres, ¿verdad?
Cerrar: restablece el resto de los datos en el disco y se cierra.
no en lugar de, sino por necesidad.
Flush - restablece los datos restantes, y NO cierra el archivo. Esto es lo que quieres, ¿verdad?
Cerrar - borra los datos restantes en el disco y se cierra.
Algo sobre la minimización del tiempo usando FileFlush() no funciona muy bien:
2011.05.29 21:58:20 FlushSave (EURGBP,M1) FileFlush. GetTickCount() = 133766
2011.05.29 22:00:33 FlushSave (EURGBP,M1) FileClose. GetTickCount() = 133734
De hecho, ambas funciones tardan el mismo tiempo en funcionar.
Según he entendido esta línea mueve la posición al principio del archivo sin desplazamiento. Esto permite sobrescribir la información existente (es decir, la fecha se actualiza, pero no se acumula en el archivo).
Al utilizar move to end of file en lugar de SEEK_SET, los datos se amontonarían en el archivo.
Se abre un nuevo manejador de archivo cada vez que se descarga. ¿Para qué? Y por cierto, no lo cierras.
La ventaja de la función FileFlush es que no es necesario volver a abrir el mango.
1. Según tengo entendido, esta línea mueve la posición en el archivo sin desplazamiento. Esto permite sobrescribir la información existente (es decir, la fecha se actualiza pero no se acumula en el archivo)
Así, si se utiliza en lugar de SEEK_SET saltar al final del archivo, los datos se acumularán en el archivo.Se abre un nuevo manejador de archivo cada vez que se descarga. ¿Para qué? Y por cierto, no lo cierras.
La ventaja de la función FileFlush es que no es necesario volver a abrir el mango.
Lo hice así:
Resultado:
2011.05.29 23:14:31 FlushSave (EURGBP,M1) FileFlush. GetTickCount() = 13563
2011.05.29 23:14:32 FlushSave (EURGBP,M1) FileClose. GetTickCount() = 531
Cambié las líneas, según la documentación:
Pero no entiendo el sentido de llamar a FileFlush() antes de FileWrite().Lo hice así:
Resultado:
2011.05.29 23:14:31 FlushSave (EURGBP,M1) FileFlush. GetTickCount() = 13563
2011.05.29 23:14:32 FlushSave (EURGBP,M1) FileClose. GetTickCount() = 531
Intercambié las líneas, según la documentación:
Pero aún no se ha entendido el sentido de llamar a FileFlush() antes de FileWrite().Aquí está la variante:
El resultado es FileFlush. GetTickCount() = 26125
Aquí está la variante:
El resultado es FileClose. GetTickCount() = 3969Esta opción dio un resultado entre 47 y 110
1. Conclusión - El uso de FileFlush en un bucle ralentiza la ejecución unas 260 veces.
2. Un bucle para 50.000 registros en esta variante tiene el siguiente resultado - FileFlush. GetTickCount() = 1891.
3. No conseguí matar el terminal al ejecutar el ciclo de 50000 escrituras sin salir del archivo (cerré el terminal y "maté" el proceso).
4. Pude matar a la terminal con 100000 de bucle, y el archivo contenía más de 65536 registros (tanto espacio en Excel 2003).
He intercambiado las líneas según la documentación:
¿Dónde lo dice la documentación?
¿Cómo se puede dar sentido a algo que no lo tiene? Devuelve el orden de las cadenas y vuelve a comprobarlo. Al parecer, la documentación no lo expresaba correctamente.
Pero... Gracias a tus pruebas, parece que se ha detectado el error: FileFlush parece consumir una cantidad de tiempo desmesurada cuando no se realizan cambios.Interesante:
¡OMG! Es donde se deduce que es un marasmo. Así aparecen afirmaciones como "la POO es más rápida" o "los indicadores son lentos, deberíamos trasladar todo el código al Asesor Experto".
Experto, escriba cómo utilizar esta función correctamente.
Hipotéticamente sí:
Es decir, es correcto comparar el paquete FileClose -- FileOpen con FileFlush.
Teóricamente, FileFlush debería ser una parte de FileClose y no podría ser más lento que el paquete.
No tiene sentido tirar de los cambios antes de que aparezcan, porque todavía no están ahí :)
Pero, a pesar de las conclusiones descabelladas, las pruebas son indicativas, así que esperamos los comentarios de los desarrolladores sobre cómo funciona la función cuando no hay cambios.