> -----Mensaje original----- > De: Victor H De la Luz [mailto:itz...@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 <gorkali...@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. -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org