В скомпилированном языке с хорошим компилятором (который выполняет хотя бы посредственную оптимизацию) наличие переменных, объявленных внутри цикла, никогда не будет «проигравшим» и часто (особенно для компиляторов с только скромной оптимизацией) будет «победителем»Msgstr ".
С интерпретированными языками, вероятно, все будет иначе.Каждый раз, когда в цикле интерпретатору нужно будет выделять места для переменных, это может быть дорого.
Вы также можете столкнуться с ситуацией «проигравшего» в плохо спроектированной скомпилированной среде, где распределение переменных в стекедорого.
Хотя с любым из этих сценариев я не смог бы объяснить разницу 40: 1.Я подозреваю, что пропущенный код может содержать некоторые важные подсказки.
[Ах, при повторном чтении (и, возможно, при повторном редактировании плаката), я вижу, что это не просто переменная DECLARATION, а создание OBJECT, которое перемещаетсявне петли.]