На каждом языке программирования существует несколько способов достижения одинаковых функциональных возможностей. В Java очень хорошо известен конкатенация строк. Важно учитывать ваш вариант использования при определении того, какие функции лучше всего использовать.

На моей текущей работе у нас есть внутренний и доступный для клиентов функциональный язык, на котором построено почти все, а также клиенты используют его для создания своих приложений. Пользователи сталкиваются с подводными камнями нескольких способов достижения одной и той же функциональности. Чтобы иметь четкое руководство для разработчиков, я хотел иметь возможность предоставить фактические данные о том, какая функциональность является наилучшей с точки зрения производительности с учетом различных подмножеств данных. Подобно тому, как я оценивал изменения параметров JVM, я использовал тесты JMH (Java Microbenchmark Harness).

Тесты

Для этого сравнения я буду тестировать разницу в производительности между двумя функциями и двумя эквивалентностями синтаксиса: конкатенация строк (fn!concat против &) и сложение (fn!sum против +).

Выводы

Ни один из тестов синтаксиса для 1000 параметров не смог выполнить. Хотя версия синтаксиса быстрее, чем версии функций для 2 параметров (базовый случай), обе функции выполняются лучше, чем их синтаксические аналоги при случайных параметрах 10/100/1000.