On Monday, 5 September 2016 at 05:08:53 UTC, Manu wrote:
A central premise of performance-oriented programming which I've
employed my entire career, is "where there is one, there is probably
many", and if you do something to one, you should do it to many.
With this in mind, the code I have always written doesn't tend to look
like this:
  R manipulate(Thing thing);

Instead:
void manipulateThings(Thing *things, size_t numThings, R *output,
size_t outputLen);

Written this way for clarity. Obviously, the D equiv uses slices.

To chime in, processing in chunks is indeed absolutely key for audio performance. Processing by element is only tolerable for prototyping. I don't even use slices since but usually pointers and length, since most slice length would be the same.

void processSamples(float* input, float* output, int samples);

Some kind of buffered input and output range concept would be needed there if a lazy library was to be made.

Unfortunately for this case inputs and outputs are rather diverse. Can't wait for a more formalized DbI introduction.

As for graphics, ae.utils.graphics usually give you a whole line of pixels.

Reply via email to