Review of Andrei's std.benchmark
David Piepgrass
qwertie256 at gmail.com
Sat Sep 22 09:14:24 PDT 2012
>> - It is very strange that the documentation of printBenchmarks
>> uses
>> neither of the words "average" or "minimum", and doesn't say
>> how many
>> trials are done.... I suppose the obvious interpretation is
>> that it
>> only does one trial, but then we wouldn't be having this
>> discussion
>> about averages and minimums right? Øivind says tests are run
>> 1000
>> times... but it needs to be configurable per-test (my idea:
>> support a
>> _x1000 suffix in function names, or _for1000ms to run the test
>> for at
>> least 1000 milliseconds; and allow a multiplier when when
>> running a
>> group of benchmarks, e.g. a multiplier argument of 0.5 means
>> to only
>> run half as many trials as usual.) Also, it is not clear from
>> the
>> documentation what the single parameter to each benchmark is
>> (define
>> "iterations count".)
>
> I don't think it's a good idea because the "for 1000 ms"
> doesn't say anything except how good the clock resolution was
> on the system. I'm as strongly convinced we shouldn't print
> useless information as I am we should print useful information.
I am puzzled about what you think my suggestion meant. I am
suggesting allowing the user to configure how long benchmarking
takes. Some users might want to run their benchmark for an hour
to get stable and reliable numbers; others don't want to wait and
want to see results ASAP. Perhaps the *same* user will want to
run benchmarks quickly while developing them and then do a "final
run" with more trials once their benchmark suite is complete.
Also, some individual benchmark functions will take microseconds
to complete; others may take seconds to complete. All I'm
suggesting are simple ways to avoid wasting users' time, without
making std.benchmark overly complicated.
More information about the Digitalmars-d
mailing list