Разница в производительности между VLA и массивом статического размера должна быть незначительной.Возможно, вам понадобится несколько дополнительных инструкций, чтобы вычислить, как вырастить стек, но это должно быть шумом в любой реальной программе.
Хм, если подумать, возможны и дополнительные издержки, зависящие от того, как локальные переменные расположены в памяти, и от наличия нескольких VLA.
Рассмотрим случай, когда у вас есть локальные переменные.(и предположим, что они помещены в память в указанном порядке).
int x;
int arr1[n];
int arr2[n];
Теперь, когда вам нужно получить доступ к arr2
, код должен вычислить местоположение arr2
относительно вашегобазовый указатель.