Pogledajte određenu poruku
Staro 04. 02. 2006.   #32
zextra
Boris
Grand Master
 
Avatar zextra
 
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
zextra is on a distinguished roadzextra is on a distinguished road
Default

Uz malu modifikaciju (0.5 umesto 2 miliona iteracija, ali se md5 hash sece na 4 dela - iako bi moglo na jos vise delova - pa se u jednoj iteraciji dobiju 4 key-a umesto jednog) skripta radi nesto brze. Ukupno zauzece memorije je manje od 30mb (negde oko 25-27) za perl i sort zajedno. Propustanjem unique key-eva kroz "wc -l" dobije se da je broj duplikata uvek manji od 0.025%, sto je verovatno zadovoljavajuce, uz vreme izvrsavanja manje od 15 sekundi (sa sve sortiranjem).

Ja sam uvek pre za Perl kada je iole veca kolicina podataka u pitanju - posebno ako treba nesto da se parsuje

Eve ga i kod ako nekog zanima..
Kôd:
use Digest::MD5 qw/md5_hex/;
use Time::HiRes qw/gettimeofday/;

my $i = 0;
while( $i++ < 500_000 )
{
    my ( $m, $ms ) = gettimeofday;
    my $code = md5_hex( $m / rand( $ms ) );

    printf(
        "%s\n"x4,
        substr( $code,  0, 8 ),
        substr( $code,  8, 8 ),
        substr( $code, 16, 8 ),
        substr( $code, 24, 8 )
    );
}
A rezultat izvrsavanja...
Kôd:
$ time perl rand.pl | sort -u | wc -l
1999556

real    0m14.923s
user    0m14.129s
sys     0m0.460s
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams
zextra je offline   Odgovorite uz citat