RE: [OT]Re: Programa extremadamente lento
> -----Mensaje original-----
> De: Victor H De la Luz [mailto:itztli@gmail.com]
> Enviado el: martes, 03 de febrero de 2009 17:52
> Para: Debian Usuarios
> Asunto: [OT]Re: Programa extremadamente lento
>
> 2009/2/3 Gorka <gorkalinux@yahoo.es>:
> > Hola.
> >
> > Tengo un script de perl con este bucle:
> >
> > for (my $j=0;$j<=$#fichero1;$j++)
> > {
> > if (@fichero1[$j] eq $valor1)
> > {
> > $token = 1;
> > }
> > }
> >
> > El problema es que fichero1 tiene 32 millones de registros y que,
> además,
> > tengo que hacer este bucle millones de veces, por lo que he calculado
> que me
> > tardaría AÑOS en acabar.
> > ¿Alguien sabe alguna manera de optimizarlo? ¿O hay algún otro
> lenguaje de
> > programación bajo linux donde pueda hacer esto muchísimo más rápido?
> > Gracias.
> >
> >
>
> Mta, es de los clasicos problemas que se ven faciles pero en la
> realidad ya no tanto. Creo que depende de lo que estas tratando de
> hacer.
>
> ¿Que estas buscando? ¿Tu lista de datos esta ordenada? ¿Que tipo de
> datos es el que buscas? ¿Que codificación tiene tu archivo?
>
> pdt: Creo que es un [OT]
>
> --
> ItZtLi
Hola, Víctor.
La lista está ordenada. Los datos del fichero (un fichero que crea
automáticamente un programa en linux) inicialmente eran ...
>462_18_279_F3,1_-654315.2
T0130330212003123010013130
>462_32_347_F3,1_4720359.2
T3013112021230101112012000
>462_35_39_F3,1_-1719430.0
T0000221230220202223010131
>462_36_354_F3,1_-3810561.2
T2332000221032111021000320
>593_1644_272_F3,1_-1322672.0
T0131030203231031022021210
.... pero yo los he volcado a un vector @fichero1 quedándome sólo la parte
que me interesa comparar con $valor1, que es ...
462_18_279
462_32_347
462_35_39
462_36_354
593_1644_272
.... que es lo que, como te digo, contienen el vector @fichero1.
Como la lista está ordenada, intenté hacer lo siguiente, ...
for (my $j=0;($j<=$#fichero1)and($valor1 ge @fichero1[$j]);$j++)
{
if (@fichero1[$j] eq $valor1)
{
$token = 1;
}
}
.... pero por algún motivo, que aún no comprendo, me deja algunos valores
fuera.
¿Se te ocurre cómo ganar velocidad con este script?
Un saludo.
Reply to: