Re: New vs length on dymamic array

2020-11-09 Thread Виталий Фадеев via Digitalmars-d-learn

On Monday, 9 November 2020 at 09:05:58 UTC, Imperatorn wrote:

On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:

Hello,

Are here any differences in creation of dynamic array with 
known size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;


You can check using compiler explorer:
https://godbolt.org/


Cool tool!

Array creation disassemble: https://godbolt.org/z/GzxWao



Re: New vs length on dymamic array

2020-11-09 Thread user1234 via Digitalmars-d-learn

On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:

Hello,

Are here any differences in creation of dynamic array with 
known size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;


It's the same. If the two are valid then you are in a function. 
So it's an alloca for the dynamic array payload (8+8 bytes on 
x86_64) then a LengthExpression that will lead to a GC.malloc, 
and finally a memset for all the elements default values.


Re: New vs length on dymamic array

2020-11-09 Thread Daniel Kozák via Digitalmars-d-learn

On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:

Hello,

Are here any differences in creation of dynamic array with 
known size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;


In theory
auto array = new wchar[111]; // or new wchar[](111);
should do less work, but in practice I would guess there will be 
almost zero difference in speed.


If you need to create new dynamic array with known size you 
should prefere

auto array = new wchar[111]; // or new wchar[](111);

because it is make much more sense than create empty non 
initialized array and then set it a length




Re: New vs length on dymamic array

2020-11-09 Thread Vladimirs Nordholm via Digitalmars-d-learn

On Monday, 9 November 2020 at 09:05:58 UTC, Imperatorn wrote:

On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:

Hello,

Are here any differences in creation of dynamic array with 
known size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;


You can check using compiler explorer:
https://godbolt.org/


I don't understand assembly, so this does not tell me anything 
useful.


Are there any reasons to prefer one over the other? I assume this 
is what OP is actually asking about.


Re: New vs length on dymamic array

2020-11-09 Thread Imperatorn via Digitalmars-d-learn

On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:

Hello,

Are here any differences in creation of dynamic array with 
known size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;


You can check using compiler explorer:
https://godbolt.org/


New vs length on dymamic array

2020-11-09 Thread Andrey via Digitalmars-d-learn

Hello,

Are here any differences in creation of dynamic array with known 
size?



auto array = new wchar[](111);


and


wchar[] array;
array.length = 111;