![]() |
funcion CopyFrom SUPER LENTA!
Hola gente!
Estoy haciendo un codigo para resumir transferencia de archivos via TCPIP y me encuentro con un problema trabajando con los archivos, mas precisamente con los stream. No se porque la funcion CopyFrom resulta TREMENDAMENTE LENTA!!! Ej. con un archivo de 60mb tarda como 30 segundos en pasar esa linea. No creo que sea mi PC es bastante rapida. Aqui esta el codigo: fileStream := TFileStream.Create(archivo, fmOpenRead); //abro el archivo fileStream.Seek(Offset, soFromBeginning); //muevo el puntero memStream := TMemoryStream.Create; //creo el memorySream para pasar por TCP memStream.CopyFrom(fileStream, fileStream.Size - Offset); //super lento! El programa anda bien! cumple su funcion, pero anda muy lento por esa linea. ¿Que puede estar pasando? Gracias por adelantado! |
No soy un gurú de estos temas... pero .... 60 mb / 30 seg = 2 megabytes por segundo.
Quitando la desfragmentación que pueda tener el archivo en el disco duro, yo lo veo rapidito, además poco tiene que ver el ordenador, quizás el cuello de botella está en la red ¿LAN, INTERNET?, tráfico, máxima velocidad de la red, etc. ¿has probado con otras formas de envío? para determinar que es lento? Saludos |
Da la impresion (aunque falta parte del codigo) que asignas los 60Mega enteros a un memory stream, eso son 60 megas leidos de golpe del disco a la memoria, son una burrada de megas para cargar en memoria muchos equipos directamente se colapsaran.
Deberias leer la informacion del archivo en bloques pequeños de unos pocos kilobytes. Saludos |
| La franja horaria es GMT +2. Ahora son las 12:14:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi