Better way to append to array than ~= ?
Alex
sascha.orlov at gmail.com
Tue Apr 3 20:41:01 UTC 2018
On Tuesday, 3 April 2018 at 20:02:46 UTC, Vladimirs Nordholm
wrote:
> On Tuesday, 3 April 2018 at 19:53:11 UTC, Meta wrote:
>> On Tuesday, 3 April 2018 at 19:02:25 UTC, Vladimirs Nordholm
>> wrote:
>>> [...]
>>
>> In this specific case, since you know the length of `Args`,
>> you can pre-allocate an array of that size and loop through it
>> doing your initialization.
>>
>> However, if you want really performant code, you should
>> allocate a static array on the stack outside of the function
>> and pass it in as a buffer.
>
> I don't think I know the size of the arguments.
>
> If I pass in "123" and MySpecialType('a'), the result should be:
>
> assert(foo("123", MySpecialType('a')) ==
> [MySpecialType('1'), MySpecialType('2'), MySpecialType('3'),
> MySpecialType('a')]);
>
> What should the length of the pre-allocated array be?
In my try, I iterate the args twice. The first time to calculate
the number of elements, then preallocate and then iterate them
again and constructing the proper objects.
It is not nice, but about 1/3 of time, compared to original
version, compiled in release mode.
https://run.dlang.io/is/E6ckog
More information about the Digitalmars-d-learn
mailing list