Hi Arne.

>I would like to merge the branch arne/new_buffer. It implements
>and uses the new dynamic buffer implementation I have talked about on
>the conference. The main idea behind this implementation is to help the
>compiler generate better code in spite of the aliasing rules of C. In
>particular it tries to allow compilers to coalesce individual writes to
>the buffer into larger MOVs. This works reasonably well in gcc and
>clang.

I've only had a cursory look at the new code, but this sounds good to me.

>The immediate benefits are that encode_value and describe_svalue got
>some significant speedup. I added some benchmarks to the pike-benchmark
>repository. On my machine the results look like this:
>
>buffer/encode.pike#decode_array(int)            |   73.0  M  1.7 %   |   71.1  
>M  0.8 %   |
>buffer/encode.pike#decode_string(8bit)          |   10.0  G  2.1 %   |    9.9  
>G  3.9 %   |

Looks great except for the above two, which I suspect fall within the
measurement margin of error.

>Once this branch has been merged I would like to change the machine code
>generators to use it. However, that will require some API changes to
>everything in code/*. This was in fact the initial reason why I started
>looking into this.

Sounds great.

        /grubba

Reply via email to