> Loďc Hoguin
--
Loïc Hoguin
Agreed that benchmarks can be harmful if they aren't viewed
objectively though. We just need a caveat that the user measures his
or her own application as well!
So, don't make decisions unless you have reasonably complete
information, whatever that means :)
I've used it a few times, although I am not 100% sure it's super
representative o a real system being under load.
I think also ecriterion should be mentioned - it does an honest attempt at verifying the reliability of the results.
> It's not very interesting unless the numbers are also available for
> systems under load.
Wouldn’t you want benchmarks to eliminate confounding variables rather than add them?
If you wanted to benchmark under load, however, why not just put the system under the load you want to test under and then run your benchmarks. I would not expect the benchmarking framework to provide that load for you.
Cheers,
DBM
I started out wanting a really stable core measurement loop, and a way
to calibrate the system under test so that it could automatically set
good defaults for number of iterations, and be aware of the clock
precision and typical variance. As I went on, I started abstracting more
and more, and some ideas (like the "berps" - bogus erlang reductions per
second) got left as rough sketches, and there's nothing yet that
actually saves the result of a calibration and reuses it.
The parts that are working well are the runner/1, gather/1, and stats/1
functions, and the functions run/2, run_for/2, and calibrate/0, which
you can study to understand how the runner and gather functions work.
There's still some tweaking to be done - the calibration doesn't always
converge as well as I'd like it.
> and what is the purpose of sending
> a message many times to a dead process? Does it have some well-defined
> behavior in the virtual machine?
No, it was just a way to set up a calibration loop that did something
very cheap but that the compiler couldn't optimize away. But that part
isn't very exciting - I'm not using it for anything yet. I just dropped
all of the code in a single module to keep it simple at this stage.
/Richard