Now both splatting approaches are slow, ha.
@btime let; [(; MyStruct((a=rand(),b=rand()),(c=rand(),d=rand()))...) for i=1:1000] end;
# 1.781 ms (58004 allocations: 2.76 MiB)
@btime let; [(MyStruct((a=rand(),b=rand()),(c=rand(),d=rand()))...,) for i=1:1000] end;
# 816.800 μs (34010 allocations: 1.60 MiB)