В большинстве случаев я ожидал бы, что array.length()
будет реализован таким образом, что это O (1), так что это не будет реально влиять на производительность цикла. Если вы сомневаетесь или хотите убедиться, что это константа, просто сделайте это явно:
// JavaScript
var l = a.length;
for (var i=0; i<l; i++) {
// do something
}
Я считаю обратную запись "умным взломом", который попадает в категорию преждевременной оптимизации. Его сложнее читать, он более подвержен ошибкам и на самом деле не дает преимущества по сравнению с альтернативой, которую я предлагаю.
Но поскольку реализации компиляторов / интерпретаторов сильно различаются, и вы не говорите, на какой язык ссылаетесь, трудно сделать абсолютное утверждение по этому поводу. Я бы сказал, если только это не является критически важным для времени разделом кода или иным образом не вносит ощутимый вклад во время выполнения кода, а ваши тесты производительности показывают, что выполнение этого по-другому дает реальную выгоду, я бы придерживался кода, который легче понять и поддерживать .