On 12/17/20 8:11 AM, IGotD- wrote:

> It's common using arrays for buffering, that means constantly adding
> elements and empty the elements.

I show an example of this at the following point in a DConf presentation:

  https://youtu.be/dRORNQIB2wA?t=791

The following code:

  int[] outer;

  while (a) {
    int[] inner;

    while (b) {
      inner ~= e;
    }

    outer ~= bar(inner);
  }

Can be turned into this:

  // Remember: These are thread-local
  static Appender!(int[]) outer;
  static Appender!(int[]) inner;

  outer.clear();    // Clear state from last call

  while (a) {
    inner.clear();  // Clear state from last iteration

    while (b) {
      inner ~= e;
    }

    outer ~= bar(inner.data);
  }

There is also assumeUnique(), which does not appear in the presentation, which may be useful in some cases.

Ali

Reply via email to