digitalmars.D.learn - Big struct/class and T.init
- Guillaume Piolat (10/10) Feb 19 2023 If my understanding is correct, the mere fact of having a:
- Steven Schveighoffer (8/21) Feb 19 2023 Yes.
- Steven Schveighoffer (9/11) Feb 19 2023 And BTW, you can override this by assigning a zero default:
- Guillaume Piolat (3/14) Feb 19 2023 TIL. Nice trick!
If my understanding is correct, the mere fact of having a:
struct S
{
char[16384] array;
}
And then using it anywhere, will necessarily lead to a S.init
being created and linked, leading to a binary size inflation of
16kb.
This is not a super high concern, but can inform design decisions.
Is this correct?
Feb 19 2023
On 2/19/23 1:11 PM, Guillaume Piolat wrote:
If my understanding is correct, the mere fact of having a:
struct S
{
char[16384] array;
}
And then using it anywhere, will necessarily lead to a S.init being
created and linked, leading to a binary size inflation of 16kb.
This is not a super high concern, but can inform design decisions.
Is this correct?
Yes.
that's not the case for all-zero .init though. At least in
`TypeInfo.initializer`, it's pointing to null with array size indicating
the amount of zeroes to write.
Testing with run.dlang.io, switching between `char` and `int` changes
the ASM output to show whether it's stored or not.
-Steve
Feb 19 2023
On 2/19/23 1:26 PM, Steven Schveighoffer wrote:Testing with run.dlang.io, switching between `char` and `int` changes the ASM output to show whether it's stored or not.And BTW, you can override this by assigning a zero default: ```d struct S { char[16384] array = 0; // no .init storage } ``` -Steve
Feb 19 2023
On Sunday, 19 February 2023 at 18:29:05 UTC, Steven Schveighoffer wrote:On 2/19/23 1:26 PM, Steven Schveighoffer wrote:TIL. Nice trick!Testing with run.dlang.io, switching between `char` and `int` changes the ASM output to show whether it's stored or not.And BTW, you can override this by assigning a zero default: ```d struct S { char[16384] array = 0; // no .init storage } ``` -Steve
Feb 19 2023








Guillaume Piolat <first.last spam.org>