Hi Elias,

normally APL values are not written to. The exception is indexed assignment.

I believe the clone() call in Symbol::resolve() can be skipped completely.
This is probably the most frequently used clone() case. I suppose copy-on-write semantics is
achieved when all clone() calls are gone. Many of the remaining clone() calls are specific
to certain functions so their performance impact should be small.

I haven't done the above before the 1.4 release because I didn't want to release
a not-so-well tested optimization.

/// Jürgen


On 08/23/2014 05:32 PM, Elias Mårtenson wrote:
Cool :-)

Speaking of this, I did spend quite a bit of time some time ago to try to figure out an easy way to get generic copy-on-write semantics, but I never came to a satisfactory conclusion. I might revisit it later.

Have you thought about it? It is, after all, related to this specific optimisation.

Regards,
Elias


On 23 August 2014 23:29, Juergen Sauermann <juergen.sauerm...@t-online.de> wrote:
Hi,

I have revived Elias' in-place optimization for A⍴B and ,B now usinng a different
way of figuring if B is in use. SVN 445.

/// Jürgen



Reply via email to