Thread overview | ||||||
---|---|---|---|---|---|---|
|
October 16, 2020 Why is `Appender._data` a pointer to its `Data`-store? | ||||
---|---|---|---|---|
| ||||
Why is `Appender`'s store `Data` put directly as `private Data* _data;` instead of `private Data _data;` ? Removing the pointer indirection would give better locality. If it's about optimizing for empty `Appender`s then a `Appender*` should be used in those cases instead. |
October 16, 2020 Re: Why is `Appender._data` a pointer to its `Data`-store? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On 10/16/20 5:40 PM, Per Nordlöw wrote:
> Why is `Appender`'s store `Data` put directly as
>
> `private Data* _data;`
>
> instead of
>
> `private Data _data;`
>
> ?
>
> Removing the pointer indirection would give better locality.
>
> If it's about optimizing for empty `Appender`s then a `Appender*` should be used in those cases instead.
Appender is ref counted IIRC.
-Steve
|
October 17, 2020 Re: Why is `Appender._data` a pointer to its `Data`-store? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Saturday, 17 October 2020 at 00:06:31 UTC, Steven Schveighoffer wrote:
>
> Appender is ref counted IIRC.
>
> -Steve
It's not; it uses the GC.
|
October 17, 2020 Re: Why is `Appender._data` a pointer to its `Data`-store? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paul Backus | On 10/17/20 12:00 AM, Paul Backus wrote: > On Saturday, 17 October 2020 at 00:06:31 UTC, Steven Schveighoffer wrote: >> >> Appender is ref counted IIRC. >> > > It's not; it uses the GC. Oh yeah. In fact, it was me who did that (in 2010!). My point should have been that the appender is a pImpl to avoid memory corruption. If you have multiple copies of an appender, and each has its own idea of what the capacity is, then you will get corruption. See the original bug report here: https://issues.dlang.org/show_bug.cgi?id=4681 -Steve |
Copyright © 1999-2021 by the D Language Foundation