in reply to Re: User Existance?
in thread User Existance?
I apologize, my while loop exit code was wrong. No wonder the regex beat getpwnam. Here is the correct code and results. Stick wirh getpwnam().
#!/usr/bin/perl -w use Benchmark; for $x (1, 50, 1000, 3000, 6000){ timethese (1000,{ "getpwnam${x}" => q { $there=getpwnam("x${x}") }, "regex${x}" => q {open(PASSWD,"/etc/passwd"); while(<PASSWD>) { if (/^x${x}:/){$alsothere=1; last}; } close PASSWD;}, }); } Benchmark: timing 1000 iterations of getpwnam1, regex1... getpwnam1: 0 wallclock secs ( 0.12 usr + 0.06 sys = 0.18 CPU) @ 55 +55.56/s (n =1000) (warning: too few iterations for a reliable count) regex1: 0 wallclock secs ( 0.41 usr + 0.02 sys = 0.43 CPU) @ 23 +25.58/s (n =1000) Benchmark: timing 1000 iterations of getpwnam50, regex50... getpwnam50: 1 wallclock secs ( 0.28 usr + 0.02 sys = 0.30 CPU) @ 33 +33.33/s (n =1000) (warning: too few iterations for a reliable count) regex50: 1 wallclock secs ( 0.80 usr + 0.04 sys = 0.84 CPU) @ 11 +90.48/s (n =1000) Benchmark: timing 1000 iterations of getpwnam1000, regex1000... getpwnam1000: 2 wallclock secs ( 2.41 usr + 0.20 sys = 2.61 CPU) @ +383.14/s ( n=1000) regex1000: 9 wallclock secs ( 8.52 usr + 0.13 sys = 8.65 CPU) @ 11 +5.61/s (n= 1000) Benchmark: timing 1000 iterations of getpwnam3000, regex3000... getpwnam3000: 9 wallclock secs ( 7.36 usr + 0.38 sys = 7.74 CPU) @ +129.20/s ( n=1000) regex3000: 28 wallclock secs (24.94 usr + 0.54 sys = 25.48 CPU) @ 39 +.25/s (n=1 000) Benchmark: timing 1000 iterations of getpwnam6000, regex6000... getpwnam6000: 16 wallclock secs (14.44 usr + 0.77 sys = 15.21 CPU) @ +65.75/s (n =1000) regex6000: 50 wallclock secs (49.24 usr + 1.17 sys = 50.41 CPU) @ 19 +.84/s (n=1 000)
Forgiveness Please.
Beating myself with a bamboo cane as I speak.
|
|---|