Вы переместили переменные , но это не объекты . Предполагая, что вы присваиваете различные значения a
, b
и c
на каждой итерации цикла, вы вообще не сократили выделение памяти - вы просто излишне расширили диапазон переменных.
Если вам не нужно изменять значения a
, b
и c
в цикле, то это другой вопрос, и было бы лучше назначить их вне цикла, а не на каждая итерация.
Главное - понять разницу между объектами и переменными . В частности, создание «новых» переменных на каждой итерации цикла фактически ничего не стоит.
РЕДАКТИРОВАТЬ: Хорошо, с обновленным вопросом, ясно, это разница в том, сколько объектов создано. Однако, в зависимости от того, что именно происходит во второй форме, все еще может быть более предпочтительным: это, безусловно, легче понять, и это не зависит от деталей того, что делает операция flush
. С другой стороны, если создание экземпляра SomeObject
стоит дорого (например, он генерирует криптографические ключи), то лучше оптимизировать его.
Короче говоря: это зависит. Сначала напишите наиболее читаемый код, измерьте его и сравните с вашими требованиями к производительности. Переходите к менее очевидному коду только тогда, когда есть очевидная выгода.