digitalmars.D.learn - New vs length on dymamic array
- Andrey (4/7) Nov 09 2020 Hello,
- Imperatorn (3/10) Nov 09 2020 You can check using compiler explorer:
- Vladimirs Nordholm (5/19) Nov 09 2020 I don't understand assembly, so this does not tell me anything
- =?UTF-8?B?0JLQuNGC0LDQu9C40Lkg0KTQsNC0?= =?UTF-8?B?0LXQtdCy?= (3/17) Nov 09 2020 Cool tool!
- Daniel =?UTF-8?B?S296w6Fr?= (10/17) Nov 09 2020 In theory
- user1234 (5/12) Nov 09 2020 It's the same. If the two are valid then you are in a function.
Hello, Are here any differences in creation of dynamic array with known size?auto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020
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?You can check using compiler explorer: https://godbolt.org/auto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020
On Monday, 9 November 2020 at 09:05:58 UTC, Imperatorn wrote:On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote: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.Hello, Are here any differences in creation of dynamic array with known size?You can check using compiler explorer: https://godbolt.org/auto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020
On Monday, 9 November 2020 at 09:05:58 UTC, Imperatorn wrote:On Monday, 9 November 2020 at 08:06:54 UTC, Andrey wrote:Cool tool! Array creation disassemble: https://godbolt.org/z/GzxWaoHello, Are here any differences in creation of dynamic array with known size?You can check using compiler explorer: https://godbolt.org/auto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020
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?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 lengthauto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020
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?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.auto array = new wchar[](111);andwchar[] array; array.length = 111;
Nov 09 2020