C/Visual C - Lectura Lenta

 
Vista:
sin imagen de perfil

Lectura Lenta

Publicado por José Luis (3 intervenciones) el 30/01/2010 00:25:56
Buen día a todos,

Quisiera que me ayudaran en donde buscar en la web u orientar sobre la lectura de archivos binarios.

El caso es el siguiente:

Desarrolle un codigo en C para leer archivos binarios de mas de 497GB, probé el codigo con archivos de 197GB y la lectura se concluia en 27 minutos, ahora que intento leer un archivo mayor como de 497GB la lectura se está realizando en mas de 8 horas y el desempeño del servidor se ha venido abajo.

Los comandos principales que utilizo son:

for (n=1;n<=_ntr;n++)
{
fseeko64 (f1, 3600+((n-1)*_trl), SEEK_SET);
fread (&_trched, sizeof(_trched), 1, f1);
for (i=0;i<=j;i++)
{
if (ft[i] == 2)
{
int2[0]=_trched[pt[i]-1];
int2[1]=_trched[pt[i]];
if (n==1)
{
dato[i][0]=entero2(int2);
dato[i][1]=entero2(int2);
}
if (entero2(int2)<dato[i][0]) dato[i][0]=entero2(int2);
if (entero2(int2)>dato[i][1]) dato[i][1]=entero2(int2);
if (strcmp(vw[i],"S")==0 && bandera==1 && strcmp(name_grupo,"RESUMEN")!=0) printf ("%11d ", entero2(int2));
}
else
{
int4[0]=_trched[pt[i]-1];
int4[1]=_trched[pt[i]];
int4[2]=_trched[pt[i]+1];
int4[3]=_trched[pt[i]+2];
if (n==1)
{
dato[i][0]=entero4(int4);
dato[i][1]=entero4(int4);
}
if (entero4(int4)<dato[i][0]) dato[i][0]=entero4(int4);
if (entero4(int4)>dato[i][1]) dato[i][1]=entero4(int4);
if (strcmp(vw[i],"S")==0 && bandera==1 && strcmp(name_grupo,"RESUMEN")!=0) printf ("%11d ", entero4(int4));
}
}
}

basicamente la salida del programa la grabo con "> archivo salida"

Ejemplo de ejecucion

programa archivo > archivo_salida

Espero me puedan orientar la documentacion a leer para resolver este problema de velocidad de lectura.

Saludos desde Villahermosa, Tabasco, Mexico, America, Tierra.

José Luis
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder