On 24 May 2013 19:40, Dmitry Olshansky <dmitry.o...@gmail.com> wrote:

> 24-May-2013 09:02, Manu пишет:
>
>> On 24 May 2013 14:11, Marco Leise <marco.le...@gmx.de
>> <mailto:marco.le...@gmx.de>> wrote:
>>
>>     Am Thu, 23 May 2013 20:21:47 -0400
>>     schrieb "Jonathan M Davis" <jmdavisp...@gmx.com
>>     <mailto:jmdavisp...@gmx.com>>:
>>
>>
>>      > At some point, we're probably going to need to
>>      > benchmark stuff more agressively and optimize Phobos in general
>>     more, because
>>      > it's the standard library. And eliminating unnecessary memory
>>     allocations
>>      > definitely goes along with that.
>>      >
>>      > - Jonathan M Davis
>>
>>     On a related note, a while back I benchmarked the naive Phobos
>>     approach to create a Windows API (wchar) string from a D
>>     string with using alloca to convert the string on a piece of
>>     stack memory like this: 
>> http://dpaste.1azy.net/**b60d37d4<http://dpaste.1azy.net/b60d37d4>
>>     IIRC it was 13(!) times faster for ~100 chars of English text
>>     and 5 times for some multi-byte characters.
>>     I think this approach is too hackish for Phobos, but it
>>     demonstrates that there is much room.
>>
>>
>> I don't think it's hack-ish at all, that's precisely what the stack is
>> there for. It would be awesome for people to use alloca in places that
>> it makes sense.
>> Especially in cases where the function is a leaf or leaf-stem (ie, if
>> there is no possibility of recursion), then using the stack should be
>> encouraged.
>> For safety, obviously phobos should do something like:
>>    void[] buffer = bytes < reasonable_anticipated_buffer_**size ?
>> alloca(bytes) : new void[bytes];
>>
>> toStringz is a very common source of allocations. This alloca approach
>> would be great in those cases, filenames in particular.
>>
>
> Alternatively just make a TLS buffer as scratchpad and use that everywhere.


How is that any different than just using the stack in practise?

Reply via email to