Асимптотическая сложность вызова функции дважды одинакова - любое постоянное число вызовов одной и той же (чистой) функции с одинаковыми аргументами имеет такую же асимптотическую сложность, что и один вызов этой функции, поскольку вы можете просто броситьпостоянное количество вызовов в скрытой константе big-O.
Что касается того, что будет быстрее, то нет гарантии, какой из них будет быстрее.Это зависит от языка и компилятора.Я бы посоветовал просто написать обоими способами и рассчитать время, чтобы увидеть, есть ли заметная разница.Тем не менее, если вы пишете что-то, что настолько критично для производительности, что вы не можете позволить себе звонить .length()
дважды, вам, возможно, придется пересмотреть свой подход в целом, чтобы посмотреть, есть ли лучшее глобальное решение проблемы.Микрооптимизация редко стоит усилий, если у вас нет веских оснований полагать, что ваша программа заметно медленнее в неоптимизированной версии.