<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 href="http://anonymous.mx">anonymous.mx</a> <span dir="ltr"><<a href="http://anonymous.mx">anonymous.mx</a>@<a href="http://gmail.com">gmail.com</a>></span> escribió:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;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 href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a 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 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>