Согласен с предыдущими отвечающими.
Обычно вы в своей программе не заморачиваетесь подобными вопросами, т.к. в общем случае на производительность это влияет мало и компилятор сам все оптимизирует лучше вас.
Есть смысл использовать локальную переменную, только когда лично вам, как программисту, это удобно (например это заметно сократит и упростит код).
Но встречаются специфические случаи, когда размещение переменных в памяти становится важно.
Например, за этим следят при проектировании lock-free структур данных.
В этих случаях применяют оптимизацию, смысл ее в том, что бы гарантировать, что рядом лежащие атомарные переменные будут находиться в разных кеш линиях, что позволит избежать лишней паразитной синхронизации (когда вам надо синхронизироваться по одному атомику, а синхронизируется еще и другой, если оба в одной кеш линии).
В этом случае либо дают каждому атомику выравнивание на размер кеш линии, либо вставляют между ними искусственное поле (padding) размером в кеш линию. Пишут, что это может дать не плохой буст в производительности lock-free структур на синтетических тестах, там где генерируется очень высокая конкуренция, что на практике обычно встречается не часто.
Да, в этом случае в структуре будет дырка не используемой памяти и размер структуры вырастет, но это то, чем приходится платить за lock-free доступ. Если посмотреть на какую-нибудь lock-free структуру, то обычно там либо используется дополнительная память, либо есть дополнительный код (которого не было бы если бы использовались блокировки), или чаще всего встречается и то и другое.