<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hola <br>
<br>
Concuerdo con David en que la lentitud es el archivo de 450GB, no se
porque usas Fseek para leer los bloques, tal ves si realizaras lecturas
secuenciales de bloques de 250bytes podría ser más rápido porque no se
tendría que estar ajustando el índice del archivo en cada lectura, o
eso me parece!<br>
<br>
La otra opción es que leas de un solo jalón 100 bloques de 250bytes a
memoria, de esta forma reducirías en 1000 el número de veces que lees a
disco y si tienen memoria suficiente, entonces lee 1000 bloques o los
más que puedas sin que se use la memoria swap!<br>
<br>
Saludos<br>
Ricardo Torres<br>
<br>
David Fire escribió:
<blockquote
 cite="mid:AANLkTilX94a7yl-L6TgesEUkO0Mgn8uy5yOBd3pzj3XR@mail.gmail.com"
 type="cite">
  <div>for (n=0;n<=_ntr-1;n++)</div>
  <div>{</div>
  <div>   fseeko64 (f1, 3600+((n)*_trl), SEEK_SET);</div>
  <div>   fread (&palabra, sizeof(palabra), 1, f1);</div>
  <div>   for (i=0;i<=239;i++4)</div>
  <div>   {</div>
  <div>      printf ("%6d% %6d %11d\n", entero2(palabra[i]),
entero2(palabra[i+2]), entero4(palabra[i]));</div>
  <div>   }</div>
  <div>}</div>
  <div><br>
  </div>
  <div><br>
  </div>
  <div>igual lo que te demora son los 450GB no el for... yo buscaria
una optimizacion haciendo que se guarde en distintos archivos en
distintos discos y podes lanzar varios programas a la vez, lo mas lento
aca es leer del disco.</div>
  <div>usar discos en raid 0 o 10 podria aumentarte la velocidad u otro
tipo de raid tambien.</div>
  <div><br>
  </div>
  <div><br>
  </div>
  <div><br>
  </div>
  <div><br>
  </div>
  <div><br>
  </div>
  <br>
  <div class="gmail_quote">El 2 de julio de 2010 19:18, <a
 moz-do-not-send="true" href="http://anonymous.mx">anonymous.mx</a> <span
 dir="ltr"><<a moz-do-not-send="true" href="http://anonymous.mx">anonymous.mx</a>@<a
 moz-do-not-send="true" href="http://gmail.com">gmail.com</a>></span>
escribió:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div>Buenas tardes,</div>
    <div> </div>
    <div>Solicito su orientación para analizar unos archivos con
valores enteros de 2 y 4 bytes, con registros de 240 bytes cada uno
desde linux.</div>
    <div> </div>
    <div>Son archivos de 450 GB mas o menos. tardo en leerlos unas 3
horas y me gustaria una orientación para leerlo en menos tiempo.</div>
    <div> </div>
    <div>Para hacer el vaciado leo los 240 bytes en una variable char </div>
    <div>con un for con incremento de 4 hago lo siguiente:</div>
    <div> </div>
    <div>
    <div>char palabra[240];<br>
char entero2a[2], entero2b[2], entero4a[4];</div>
    <div>for (n=0;n<=_ntr-1;n++)<br>
{<br>
   fseeko64 (f1, 3600+((n)*_trl), SEEK_SET);<br>
   fread (&palabra, sizeof(palabra), 1, f1);<br>
   for (i=0;i<=239;i++4)<br>
   {<br>
      entero2a[0] = palabra[i];<br>
      entero2a[1] = palabra[i+1];<br>
      entero2b[0] = palabra[i+2];<br>
      entero2b[1] = palabra[i+3];<br>
      entero4a[0] = palabra[i];<br>
      entero4a[1] = palabra[i+1];<br>
      entero4a[2] = palabra[i+2];<br>
      entero4a[3] = palabra[i+3];<br>
      printf ("%6d% %6d %11d\n", entero2(entero2a), entero2(entero2b),
entero4(entero4a));<br>
   }<br>
}<br>
 <br>
Estas 2 funciones las uso para convertir en entero de 2 y 4 para
convertirlos.  <br>
int entero2(unsigned char* s) <br>
{<br>
 int ret;<br>
 ret = s[0] * 256;<br>
 ret = ret + s[1];<br>
 if (ret>32767) ret = ret - 65536;<br>
 return ret;<br>
}<br>
long int entero4(unsigned char* s) <br>
{<br>
 long int ret;<br>
 ret = s[0] * 16777216;<br>
 ret = ret + s[1] * 65536;<br>
 ret = ret + s[2] * 256;<br>
 ret = ret + s[3];<br>
 if (ret>2147483647) ret = ret - 2147483646;<br>
 return ret; <br>
}</div>
    </div>
    <div> </div>
    <div>Siento lo que me está demorando es el for.</div>
    <div> </div>
    <div> </div>
    <div>Saludos desde Villahermosa, Tabasco, Mexico, America.</div>
    <div>José Luis</div>
    <div> </div>
    <br>
_______________________________________________<br>
Lista de correo Cconclase <a moz-do-not-send="true"
 href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
    <a moz-do-not-send="true"
 href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net"
 target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a moz-do-not-send="true"
 href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ"
 target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
  </blockquote>
  </div>
  <br>
  <br clear="all">
  <br>
-- <br>
(\__/) <br>
(='.'=)This is Bunny. Copy and paste bunny into your <br>
(")_(")signature to help him gain world domination. <br>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Lista de correo Cconclase <a class="moz-txt-link-abbreviated" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
<a class="moz-txt-link-freetext" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a>
Bajas: <a class="moz-txt-link-freetext" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a></pre>
</blockquote>
<br>
</body>
</html>