Вычисление логических выражений в строке внутри Java/Scala/Kotlin кода
|
|
Понедельник, 30 Апреля 2018 г. 16:41
+ в цитатник
Мне нужно было в рантайме вычислять истинность выражений типа
a>10 && bcode>
находящихся в строке Скалы.
Сам код у меня на Скале, но оценку разных библиотек для этого я делал на Котлине, просто чтобы поиграться с ним. Само выражение я получаю от клиента, но от внутреннего, поэтому мне не надо было заботиться о том, чтобы в выражении мне нe стерли файлы с диска.
Я оценивал разные библиотеки на то 1) могу ли они сделать то, что надо 2) скорость исполнения
Были проверены
- интерполяция строк
- Js Engine
- javaluator
- exp4j
- evalEx
- mxparser
- MathEval
- Groovy
- Jexl
Результаты
Время пробега в мс для 1000 выражений (вернее одно и тоже выражение для 1000 разных набoров 3х переменных):
js |
239 ms |
mxParser |
56713 ms |
evalex |
35 ms |
groovy |
118 ms |
Jexl |
62 ms |
Остальные способы/библиотеки не сработали.
Под катом подробности:
Читать дальше -> https://habr.com/post/354692/?utm_source=habrahabr&utm_medium=rss&utm_campaign=354692
Метки:
kotlin
java
jvm
groovy
expression
string
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-