Appender and CTFE
Steven Schveighoffer
schveiguy at yahoo.com
Thu Mar 3 08:19:12 PST 2011
On Thu, 03 Mar 2011 11:03:31 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> On 3/3/11 8:34 AM, Steven Schveighoffer wrote:
>> On Thu, 03 Mar 2011 07:41:49 -0500, Trass3r <un at known.com> wrote:
>>
>>> replace() doesn't work in CTFE anymore cause it was modified to be
>>> based on Appender.
>>> According to klickverbot, other phobos functions share that fate.
>>>
>>> I think something should be done about this. Couldn't Appender be
>>> implemented without using a pointer to a struct?
>>
>> Yes, it is something I intend to do. I want to make an (un at safe) scoped
>> appender which does not use a pImpl, along with a safe appender which
>> does use pImpl.
>>
>> It should be as easy as making the impl struct a public struct.
>>
>> -Steve
>
> One broader question would be if Appender's optimization is still needed
> after Steve's improvements to ~=. What is the current performance gap
> between using ~= and Appender?
It is large. The Appender struct keeps track of its capacity in a local
member, instead of having to look it up using the GC. The lookup cache
helps, but it's still a convoluted lookup, vs a simple member dereference.
Using trivial benchmarks, I found Appender is about 5x faster than ~=.
-Steve
More information about the Digitalmars-d
mailing list