Thread View: uch.ing.dcc
5 messages
5 total messages
Started by VASQUEZ MORALES MAURICIO ANDRES
Thu, 29 Jul 1999 00:00
Desordenar ?
Author: VASQUEZ MORALES MAURICIO ANDRES
Date: Thu, 29 Jul 1999 00:00
Date: Thu, 29 Jul 1999 00:00
9 lines
827 bytes
827 bytes
Hola ... queria preguntar si alguien conocia algun comando unix o funcion (C o Perl) para desordenar un archivo (desordenar un arreglo tambien sirve) ya que con archivos de miles de lineas y con random, los tiempos se me van a las nubes .... Gracias -- Mauro Vasquez
Re: Desordenar ?
Author: Jens Hardings Perl
Date: Wed, 28 Jul 1999 00:00
Date: Wed, 28 Jul 1999 00:00
16 lines
1128 bytes
1128 bytes
VASQUEZ MORALES MAURICIO ANDRES wrote: > > Hola ... queria preguntar si alguien conocia algun comando > unix o funcion (C o Perl) para desordenar un archivo (desordenar > un arreglo tambien sirve) ya que con archivos de miles de lineas > y con random, los tiempos se me van a las nubes .... AlgοΏ½na tarea de mechones con un quicksort mal implementado? ;-) -- Jens. No Gates, no Windows... It's open! Hi! I'm a .signature virus! cp me into your .signature file to help me spread!
Re: Desordenar ?
Author: VASQUEZ MORALES MAURICIO ANDRES
Date: Thu, 29 Jul 1999 00:00
Date: Thu, 29 Jul 1999 00:00
21 lines
1403 bytes
1403 bytes
In uch.ing.dcc Jens Hardings Perl <jharding@dcc.uchile.cl> wrote: : VASQUEZ MORALES MAURICIO ANDRES wrote: :> :> Hola ... queria preguntar si alguien conocia algun comando :> unix o funcion (C o Perl) para desordenar un archivo (desordenar :> un arreglo tambien sirve) ya que con archivos de miles de lineas :> y con random, los tiempos se me van a las nubes .... : Alguna tarea de mechones con un quicksort mal implementado? ;-) : -- : Jens. No ... pa' na .... tengo que hacer una publicidad aleatoria pero que se garantice que salga una vez cada aviso .... En todo caso se me han ocurrido ideas de como optimizarlo ( desordenando de a pedazos y luego uniendo) pero la idea era de si habia algun comando .... :( Mauro Vasquez
Re: Desordenar ?
Author: Denis eccp Fuenzalida
Date: Thu, 29 Jul 1999 00:00
Date: Thu, 29 Jul 1999 00:00
23 lines
1688 bytes
1688 bytes
In uch.ing.dcc VASQUEZ MORALES MAURICIO ANDRES <mvasquez@anakena.dcc.uchile.cl> wrote:
/* No ... pa' na .... tengo que hacer una publicidad aleatoria pero que
/* se garantice que salga una vez cada aviso ....
/* En todo caso se me han ocurrido ideas de como optimizarlo (
/* desordenando de a pedazos y luego uniendo) pero la idea era de si habia
/* algun comando .... :(
Lo que suelo hacer es usar el tiempo del sistema como variable aleatoria,
si es un caso como 'poner banners en un sitio web':
banner_a_poner = segundos_del_sistema % total_banners;
Puedes hacer una rutina en javascript que recoja el tiempo y escriba
un trozo de HTML que contenga el banner que tu quieres, basado en el
indice que obtienes.
Ojala te sirva,
Denis Fuenzalida (eccp / ADR), aka ".denis"
---
"Verschlingen aus Durst das letzte bisschen Licht
es gibt sie gestern nicht mehr und morgen noch nicht !"
www.dcc.uchile.cl/~dfuenzal -> demoscene@Chile, RexRemix0.3, ADR !!!
Re: Desordenar ?
Author: Aldrin Martoq A.
Date: Thu, 29 Jul 1999 00:00
Date: Thu, 29 Jul 1999 00:00
84 lines
3524 bytes
3524 bytes
In uch.ing.dcc VASQUEZ MORALES MAURICIO ANDRES <mvasquez@anakena.dcc.uchile.cl> wrote:
> In uch.ing.dcc Jens Hardings Perl <jharding@dcc.uchile.cl> wrote:
> : VASQUEZ MORALES MAURICIO ANDRES wrote:
> :> Hola ... queria preguntar si alguien conocia algun comando
> :> unix o funcion (C o Perl) para desordenar un archivo (desordenar
> :> un arreglo tambien sirve) ya que con archivos de miles de lineas
> :> y con random, los tiempos se me van a las nubes ....
> : Alguna tarea de mechones con un quicksort mal implementado? ;-)
> No ... pa' na .... tengo que hacer una publicidad aleatoria pero que
> se garantice que salga una vez cada aviso ....
> En todo caso se me han ocurrido ideas de como optimizarlo (
> desordenando de a pedazos y luego uniendo) pero la idea era de si habia
> algun comando .... :(
Aqui lo hice en perl, mas de una vez lo necesite, asi que aqui va:
Lee un archivo y lo desordena por lineas. Aqui estan los benchmarks:
los archivos tienen 10mil, 100mil o 1millon de lineas. (cada linea cuenta
desde 0 hasta N).
2:06pm [agm@cipres:~/bin/]% set time
2:06pm [agm@cipres:~/bin/]% ./desordename 10mil 10mil2
0.48u 0.02s 0:00.58 86.2%
2:07pm [agm@cipres:~/bin/]% ./desordename 100mil 100mil2
28.12u 0.19s 0:35.28 80.2%
2:07pm [agm@cipres:~/bin/]% ./desordename 1millon 1millon2
[me aburri, son las 2:25pm]
Este ultimo ocupo 45MB de RAM, segun top.
Entonces, lo que puedes hacer es poner a cada tipo en un archivo y lo
desordenas. Luego, lees el primero, el 2do .. etc, sin desordenar el archivo
a cada rato (para asegurar que a todos le toque su turno). Si llega alguien
nuevo, lo pones al principio o al final; no tienes para que re-desordenar
todo cada vez que agregas uno nuevo.
---desordename---ini---
#!/usr/bin/perl
# desordename
# Copyright(c) 1999
# Aldrin Martoq A.
sub println
{ print $_[0]. "\n"; }
if ($#ARGV < 0 or $#ARGV > 1)
{ println "Uso:\n\t$0 <archivo_entrada> [archivo_salida]";
exit 0;
}
open(ENTRADA, $ARGV[0]) or die "$ARGV[0] no se puede leer: $!";
if ($#ARGV == 1)
{ open(SALIDA, "> $ARGV[1]") or die "$ARGV[1] no se puede escribir: $!"; }
else
{ open(SALIDA, ">&STDOUT"); }
while(<ENTRADA>)
{ push @DATOS, $_; }
while ($#DATOS >= 0)
{ $r = int(rand($#DATOS));
print SALIDA $DATOS[$r];
splice(@DATOS,$r,1);
}
---desordename---fin---
Para crear los numeros del benchmark:
---a---ini---
#!/usr/bin/perl
for ($i=0; $i<$ARGV[0]; $i++)
{ print $i. "\n"; }
---a---fin---
2:16pm [agm@cipres:~/bin/]% ./a 10000 > 10mil
2:16pm [agm@cipres:~/bin/]% ./a 100000 > 100mil
2:16pm [agm@cipres:~/bin/]% ./a 1000000 > 1millon
--
Aldrin.
Area de Ingenieria
CEC U.Chile
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads