On 18/04/12 17:03, Somedude wrote:
This looks very C++ ish.

Yea, it's a rewrite of code originally in C (not even ++ ... !).

I can't comment very much, being myself quite noob, but I think you can
do this, for style as well as performance:
  - add pure nothrow everywhere you can.

I think there's very little if anything that could be marked pure -- too much of the code either calls random number generation, or calls functions that call random number generation.

Not sure about nothrow. I kind of think that this stuff _should_ throw exceptions if something goes wrong.

  - move some imports within the static if when possible, as close to
their actual usage, and it's better to do:
import core.time:clock_t, clock;

Useful to know. I'm not going to do it in this case because that's only temporary code to demo the speed differences. The imports are pretty much a copy-paste from std.random as this stuff is aimed for incorporation into std.random once it's been tested properly.

You may also want to use a bit of contract programming for input and output.

Ahhh, good point, I'll look into that.

Also not sure the _ convention for private attributes is recommended in D.

I'm copying what's already in place in std.random

Reply via email to