[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Omaha.pm] Benchmark.pm (cont'd from August)



Benchmark.pm:
  http://search.cpan.org/~rgarcia/perl-5.10.0/lib/Benchmark.pm

Back in August I complained. Yesterday I got interesting & useful info on irc.perl.org #poe:



12:44 <@Leolo> Benchmark: timing 1000000 iterations of amore, less, more...
12:44 <@Leolo> amore: 4 wallclock secs ( 2.57 usr + 0.00 sys = 2.57 CPU) @ 389105.06/s (n=1000000) 12:44 <@Leolo> less: 2 wallclock secs ( 2.52 usr + 0.00 sys = 2.52 CPU) @ 396825.40/s (n=1000000) 12:44 <@Leolo> more: 2 wallclock secs ( 2.58 usr + 0.00 sys = 2.58 CPU) @ 387596.90/s (n=1000000) 12:47 <@jhannah> Am I the only one that gave up on Benchmark? http://mail.pm.org/pipermail/omaha-pm/2008-August/001855.html 12:54 <@dngor> jhannah: Yes, wall clock is useless for benchmarking. That's why I use a CPU-time cutoff and compare the iterations/cpu time.
12:55 <@jhannah> wouldn't an accurate wallclock be insanely trivial to list?
12:55 <@Leolo> wallclock is useless
12:55 <@dngor> Wall time isn't accurate in a pre-emptive OS.
12:55 <@dngor> You're at the whim of other processes.
12:55 <@Leolo> other processes will hog the CPU, throwing off the .... what dngor said 12:55 <@dngor> Now, if you nice -19 the benchmark, that would make it better. :) 12:57 <@dngor> It may also require a reboot. Be sure your benchmark will eventually exit. :) 12:57 <@jhannah> I understand the point you're making. What I don't understand why Benchmark would label something "wallclock" when it has no bearing, whatsoever, on how much clock-on-the-wall-time elapsed. It should be removed or accurate...?
12:57  * jhannah adds an "is" in there somewhere
12:58 <@dngor> Oh, I see. Well, there's Benchmark.pm overhead which I presume it tries to discount. 13:00 <@dngor> I admit I'm just guessing at this point. The CPU/wall ratio implies that the program wasn't pre-empted much. 13:01 <@dngor> Program run time, from start to exit, also involves loading Perl and the source, compiling it, and tearing down the process. Those may be significant, but Benchmark.pm won't report them.
13:02 <@dngor> Whether these apply, I don't know.
13:03  * jhannah hugs purl, shoots Benchmark
13:03 <@jhannah> call it anything EXCEPT "wallclock" and I'm happy.  :)
13:07 <@dngor> Example of a cpu-time limit: http://poe.dyndns.org/~troc/benchmarks/bench-calls.perl 13:08 <@dngor> Example of "rolling your own" for jhannah: http://poe.dyndns.org/~troc/benchmarks/arguments.perl 13:11 <@jhannah> dngor: so you just ignore the "wallclock secs"? Or you trust them as accurate relative to each other but unrelated to a clock on the wall?
13:11 <@dngor> I ignore them and look at n per X cpu seconds.
13:11 <@dngor> CPU time is the only objective measurement.
13:12 <@dngor> The CPU is the universe.
13:13 <@dngor> There is no coupling at all between the CPU and the wall clock. Consider that many machines dynamically clock now to conserve power.