Mie Abr 23, 2008 9:41 pm
|
 |
hugon010
Perlero Nuevo

|
Registrado: 23 Abr 2008
Mensajes: 2
|
|
| Perl + SQL = Mantis DB |
|
|
Les dejo la URL de un proyecto que apenas abrimos públicamente que refiere a un DBMS o administrador de Bases de Datos.
http://www.mantisdb.com/
Está en fase experimental pero ya es utilizable.
Nos encantaría que lo descargaran y lo prueben.
Está escrito 100% en Perl.
Es multiusuario, multitarea y preparado para una alta concurrencia de consultas de modificación de datos. Posee lenguaje de consultas compatible con SQL ANSI-92
Espero les guste.
Saludos cordiales. |
|
|
|

Jue Abr 24, 2008 7:02 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4034
Ubicación: Valladolid, España
|
|
|
|
|
Bienvenidos al foro de Perl en Español.
Enhorabuena por este desarrollo. Impresionante.
De todas formas, ahí van unos comentarios:
En el algoritmo de Maza, se dice que se utiliza esto:
| Perl: | @sorted = sort { ($a-> [$orderby] <=> $b-> [$orderby]) || ($a-> [$orderby] cmp $b-> [$orderby]) } @unsorted; |
Claramente, es necesario hacer esto para distinguir los casos de ordenación numérica y alfabética, pero se pude optimizar un poquito más utilizando, por ejemplo, el sistema de índices que se comenta en la documentación de sort().
| Perl: | #!/usr/bin/perl
use warnings;
use strict;
use Benchmark qw(:all );
use Data:: Dumper;
my @array;
for my $i ( 0 .. 100_ 000 ) {
push @array, [ map { int rand 100_ 000 } 1 .. 10 ]
}
my $orderby = 0;
cmpthese ( 100, {
'Completo' => sub {
my @ordenado
=
sort {
($a-> [$orderby] <=> $b-> [$orderby]) || ($a-> [$orderby] cmp $b-> [$orderby])
}
@array
;
# print Dumper(\@ordenado[0..2]);
},
'Solo <=>' => sub {
my @ordenado
=
sort {
$a-> [$orderby] <=> $b-> [$orderby]
}
@array
;
# print Dumper(\@ordenado[0..2]);
},
'Indices' => sub {
my @indice = ( map { $array[$_][$orderby] } 0 .. $ #array );
my @ordenado
= @array[
sort {
($indice[$a] <=> $indice[$b]) or ($indice[$a] cmp $indice[$b])
} 0 .. $ #array
]
;
# print Dumper(\@ordenado[0..2]);
},
'Eval' => sub {
# Si el campo a ordenar es numérico, creamos el método de comp. numérico
my $metodo = sub { $a-> [$orderby] <=> $b-> [$orderby] };
my @ordenado = sort $metodo @array;
# print Dumper(\@ordenado[0..2]);
},
});
__END__
|
| Código: |
explorer@joaquin:~/Documents/Desarrollo> ./kk.pl
Rate Completo Eval Solo <=> Indices
Completo 1.16/s -- -0% -7% -15%
Eval 1.16/s 0% -- -7% -15%
Solo <=> 1.25/s 8% 7% -- -9%
Indices 1.37/s 18% 17% 9% -- |
Ultima edición por explorer el Vie Abr 25, 2008 11:12 am, editado 1 vez |
|

Vie Abr 25, 2008 8:17 am
|
 |
hugon010
Perlero Nuevo

|
Registrado: 23 Abr 2008
Mensajes: 2
|
|
| Acerca de tu comentario |
|
|
Explorer, tu no sabes cuánto aprecio este tipo de comentarios al que le podemos extraer mucho aprendizaje.
Sabes, me considero estudiante de Perl, lenguaje que me ha fascinado desde que lo conocí. Y me falta mucho por aprender. Este desarrollo es práctica para poder aprender más, aunque no por eso no pueda ser utilizado en producción algún día... algún día.
Este foro tal vez sea de los más completos que he visto en español, y me agradaría mucho recibir más críticas que puedan surgir con el post.
Por mi parte me siento muy complacido de compartir por lo menos mi entusiasmo por el open source a los Perleros de todas partes.
Actualmente estoy trabajando en introducir precisamente métodos con Benchmark para mostrar tiempos de las consultas.
De nuevo gracias y felicidades por este foro.
Saludos desde México. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|