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: