[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Programa extremadamente lento



On Tue, Feb 03, 2009 at 05:47:14PM +0100, Gorka wrote:
> 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.

¿Qué pretendes hacer en ese bucle? ¿Simplemente ver si en $valor está
en @fichero? En tal caso, mejor usa algo como grep (la función en
perl, no el binario en shell). O, si el orden no es muy importante,
guarda todo @fichero en un hash, en lugar de en un arreglo.

Por otra parte, ¿en última instancia qué resultado estas esperando? A
menos que estés haciendo cómputo científico, es probable que tu
problema no *necesite* hacer tantos bucles. Quizá te convenga
detenerte a pensar un poco y replantear tu algoritmo desde un nivel
más alto, antes de hacer optimización de bajo nivel en los bucles.


Reply to: