Password Generator în C
  [ Ignoră ]
Avatar
RankRankRank
Member
Din: Galati
Macuser din: 22.04.09
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argcchar *argv[]{
    
// password generator
    
int nr;
    if (
argc==1printf("Primul argument = nr de caractere\n"); 
     else 
{
        long i
;srand (time(NULL));
        for (
i=1;i<=atoi(argv[1]);i++) {
            printf
("%c",rand()+48);
        
}
        printf
("\n"); 
    
}

L-am scris și re-scris de 3,4 ori, am încercat să-i fac timpul de execuție cât mai scurt

Rezultate:
invisibles-imac:Work invisible-pro$ time(./pass 100000) 1> /dev/null

real   0m0.009s
user   0m0.008s
sys   0m0.001s

Iar la 10,000,000 de caractere doar 0.845 secunde.

Merge oare făcut și mai rapid? Sunt deschis la sugestii.

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRank
Member
Din: Galati
Macuser din: 22.04.09

printf(”%c”,(rand() % 98)+48);
Așa.

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRank
Member
Din: Tg. Mures
Macuser din: 18.10.05

Amu’ viteza depinde de masina pe care rulezi codul, evident.

Uite, pe iMac-ul meu chestia asta in Ruby e mai inceata decit a ta, dar e mai simpla :)


10.times { print((‘a’..‘z’).to_a[rand(25)]) }

Si-anume:


$ time ruby -e “100000.times { print((‘a’..‘z’).to_a[rand(25)]) }” 1> /dev/null

real   0m2.344s
user   0m2.288s
sys   0m0.014s

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRank
Member
Din: Timisoara
Macuser din: 11.10.05

De ce crezi ca e asa important sa faci for-ul ala mai rapid ?

 Semnătură 

This signature is intentionally left blank.

Profil
 
  [ Ignoră ]   [ # 4 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Cred că mai mult stă în acel “time(NULL)”

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
   
 
 
‹‹ Backtracking în C      editor text ››