Где ваши доказательства?Где детали (например, компилятор, который вы используете)?Вы используете только этот код или этот код внутри чего-то еще?Сколько прогонов вы сделали, чтобы определить это?
Чтобы получить ответ: единственная незначительная разница в производительности будет заключаться в разборе кода - поскольку в примере int a[100000000] = {0};
будет больше символов.
Взглянув на сгенерированную сборку, вы получите ответ о том, как распределяется переменная: gcc -c -S main.c
:
.file "main.c"
.globl a
.bss
.align 32
.type a, @object
.size a, 4000000000
a:
.zero 4000000000
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20170915 (Red Hat 7.2.1-2)"
.section .note.GNU-stack,"",@progbits
AND:
.file "main.c"
.globl a
.bss
.align 32
.type a, @object
.size a, 40
a:
.zero 40
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20170915 (Red Hat 7.2.1-2)"
.section .note.GNU-stack,"",@progbits