Суть в том, что ваши измерения ошибочны.Мало того, что первая версия вашего вопроса измеряла разные «вещи», но даже у обновленного вопроса есть одна большая проблема, (слишком низкий) размер выборки 10_000
!
Это просто неразумный размер выборки.По крайней мере, не один.Вы должны проверить то, что вы видите для итераций 10K, 50K, 100K, 1 миллион, ... цикл.
Видите ли, вы делаете ошибку, которую многие люди делают с Java: они предполагают, что та или иная конструкция на стороне исходного кода определяет производительность.
И это только частично верно.Видите ли, реальные пики производительности происходят из бесчисленных оптимизаций, которые JIT-компилятор в JVM будет выполнять во время выполнения, на основе собранной им информации профилирования.
Я думаю, по умолчаниюпорог, по которому JIT запускает и преобразует байт-код в высокооптимизированный машинный код, подобен вызовам метода / итерации цикла (90 КБ?)более того, JIT даже не считает ваш код «стоящим для оптимизации».Но тогда это начнется, и это может оказать существенное влияние на общую производительность.И потом, то, что вы положили в свой исходный код ... может больше не иметь значения.
Таким образом, нет ни одного измерения, которое бы указывало на то, что является «лучшим» решением.Это скорее зависит от количества итераций, которые вы проходите.
Таким образом, реальный ответ таков: бенчмаркинг производительности Java сложен, и вы должны быть предельно внимательны к тому, что вы делаете, и к выводам, которые вы делаете из своих результатов.
Помимо этого,настоящий реальный ответ: производительность - это проблема роскоши.Конечно, следует избегать глупых ошибок, которые бесполезно сжигают циклы процессора.Но кроме того, ваша основная цель всегда состоит в написании простого кода, который легко читать и понимать.И затем, когда вы замечаете, что «это кажется вялым» или «это не соответствует нашим SLA», тогда вы тщательно определяете эксперименты, чтобы измерить, что происходит, чтобы идентифицировать тот фрагмент кода, который вызывает проблему с производительностью.И просто для справки: вы знаете, какой код JIT может оптимизировать лучше всего ... сюрприз: простой прямой код, который выглядит как код 90% хороших Java-кодеров имеют тенденцию писать.