On 9/26/11 9:04 AM, Jose Armando Garcia wrote:
On Sun, Sep 25, 2011 at 6:08 PM, Andrei Alexandrescu
<[email protected]>  wrote:
Comments and suggestions are welcome.

Very nice. Really like the functionality. Really like how you
implemented "void benchmarkModule(string mod)(File target = stdout)".
I have a few comments.

My main concern on how this function works is that it looks at the
module for methods starting with benchmark_. I like the idea in
general but I am worry that it would pollute the symbol space. Does
this work with private symbols? Can the user  make all the members
private and it will still work?

Not sure whether the compiler allows it, but it shouldn't work if one module benchmarks another. That doesn't worry me - benchmark functions are meant to be exposed for anyone to play with and it doesn't seem a function starting with "benchmark_" is casually confusable.

What about versioning should the user
version all the benchmark members with version(Benchmark) or something
like that?

As they wish. We will indeed define a version(StdBenchmark) for Phobos itself.

Should the user just create a benchmark module that would
just contain all these benchmark functions. What do you recommend to
the user? Should the doc contain these recommendations?

Good idea. I will add some typical physical designs.

One last comment for now. Maybe we can make the prefix, 'benchmark_',
configurable by passing it to benchmarkModule(...).

Good idea, will do.

I think that benchmarkModule would greatly benefit from annotation it
would be nice if the user could write:

@benchmark("list")
private void listInsert() {...}

I think the benefit would be only marginal.


Thanks,

Andrei

Reply via email to