digitalmars.D - JMH
- Andrei Alexandrescu (6/6) Jan 20 2016 So this is available for Java: http://java-performance.info/jmh/. The
- Robert burner Schadek (23/23) Jan 20 2016 Yes, something like that would be nice. But as the website states
- Russel Winder via Digitalmars-d (21/29) Jan 21 2016 Or Gradle.
- Jakob Jenkov (7/11) Jan 21 2016 Actually, annotations in Java can be both read at runtime or
- Jacob Carlborg (5/8) Jan 21 2016 What we need is this:
- Chris Wright (5/13) Jan 21 2016 https://issues.dlang.org/show_bug.cgi?id=10023 for more context.
- Jacob Carlborg (11/15) Jan 22 2016 It's discoverable at compile time as well. Currently one would need to
So this is available for Java: http://java-performance.info/jmh/. The framework uses attributes such as Benchmark, BenchmarkMode(Mode.AverageTime), OutputTimeUnit(TimeUnit.MICROSECONDS) etc. to great effect. Far as I can imagine, runtime reflection is used. We should do the same, just with compile-time reflection! Andrei
Jan 20 2016
Yes, something like that would be nice. But as the website states you need to use maven to build the project that uses that library. I can only suspect, but I think they use maven to collect all functions that use Benchmark. And this leads to the problem the unittest library proposal for phobos had. The problem was that the user had to create a custom main that listed all modules to check for tests or use a build tool with some globbing commands. Both not perfect. """ Shameless self promoting ON """ With PR: https://github.com/D-Programming-Language/phobos/pull/2995 you can write: ``` void funToTest(string, int, float) { // funToTest impl } unittest { benchmark!funToTest(); } ``` and then you only have to pass the -unittest switch to dmd and be happy. """ Shameless self promoting OFF """
Jan 20 2016
On Wed, 2016-01-20 at 21:05 +0000, Robert burner Schadek via Digitalmars-d wrote:Yes, something like that would be nice. But as the website states=C2=A0 you need to use maven to build the project that uses that library.Or Gradle. (Technically: or Ant, or Gant, but hopefully the number of people using Ant is tending to zero very rapidly, and the number of Gant users is already 1.)I can only suspect, but I think they use maven to collect all=C2=A0 functions that use Benchmark. And this leads to the problem the=C2=A0 unittest library proposal for phobos had.No that is the job of the Java compiler. Gradle/Maven is just the dependency manager and build system. Think Dub.The problem was that the user had to create a custom main that=C2=A0 listed all modules to check for tests or use a build tool with=C2=A0 some globbing commands. Both not perfect.I'll check this, I thought there was a "run everything" mode avoiding the need for custom suites. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Jan 21 2016
Actually, annotations in Java can be both read at runtime or compile time. As far as I know, you cannot hook into the compiler to check for annotations, so most Java frameworks scan for annotations at startup time. Not that it matters much, anyways.I can only suspect, but I think they use maven to collect all functions that use Benchmark. And this leads to the problem the unittest library proposal for phobos had.No that is the job of the Java compiler.
Jan 21 2016
On 2016-01-20 22:05, Robert burner Schadek wrote:The problem was that the user had to create a custom main that listed all modules to check for tests or use a build tool with some globbing commands. Both not perfect.What we need is this: https://github.com/D-Programming-Language/dmd/pull/2271 -- /Jacob Carlborg
Jan 21 2016
On Thu, 21 Jan 2016 13:17:04 +0100, Jacob Carlborg wrote:On 2016-01-20 22:05, Robert burner Schadek wrote:https://issues.dlang.org/show_bug.cgi?id=10023 for more context. In short, this makes user-defined attributes discoverable at runtime at the module level, if the attribute has opted in. I think. I'm not sure how it would help here, though, so I kind of doubt my interpretation.The problem was that the user had to create a custom main that listed all modules to check for tests or use a build tool with some globbing commands. Both not perfect.What we need is this: https://github.com/D-Programming-Language/dmd/pull/2271
Jan 21 2016
On 2016-01-22 02:54, Chris Wright wrote:https://issues.dlang.org/show_bug.cgi?id=10023 for more context. In short, this makes user-defined attributes discoverable at runtime at the module level, if the attribute has opted in. I think. I'm not sure how it would help here, though, so I kind of doubt my interpretation.It's discoverable at compile time as well. Currently one would need to give a list of modules where the benchmark module would look for the benchmark attributes, or something similar. With the PR I linked to that would not be necessary. One would just compile all code of interest that contains the attributes + the benchmark module. The benchmark module would basically register a callback that is called each time the compiler sees a new module. The callback would then iterate all symbols in the modules looking for the benchmark attributes. -- /Jacob Carlborg
Jan 22 2016