|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Простой пример с регулярным выражением, используемым для проверки FQDN: Код: plsql 1. 2. 3.
Если один символ ASCII проверяется около 49 наносекунд, то каждый следующий символ увеличивает время выполнения ВДЕСЯТЕРО. Так обработка строки из шести символов занимает уже около 4,9 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 14:47 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Когда пишут о регрессии, то обычно что-то с чем-то сравнивают ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 14:54 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_dev, причём, если короткие последовательности символов ASCII разделены точками, то скорость обработки всего выражения значительно быстрее. К примеру: Код: plsql 1. 2. 3.
выполняется около 47мс, тогда как: Код: plsql 1. 2. 3.
выполняется уже около 470мс ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:08 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Пардон! В последнем операторе должно быть _ASCII 'local' ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:09 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Скорость обработки строки с разделёнными точками именами приблизительно равна скорости обработки самого короткого имени между точками. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:37 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
С регулярными вфражениями в FB все очень плохо. http://tracker.firebirdsql.org/browse/CORE-5854 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:50 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_dev, ты ответ Влада то прочитал? Регрессия по сравнению с чем? Где сравнительные тесты 2.5, 3.0? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:51 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Симонов Денис, Перевожу: регрессия ожиданий. Думал что будет "ооо!", а оно "нуууу". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:56 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Симонов Денисrdb_dev, ты ответ Влада то прочитал? Регрессия по сравнению с чем? Где сравнительные тесты 2.5, 3.0?На 2.5, вроде бы, такого не замечал. Даже если сравнивать скорость обработки строк: 'local.host', 'local' и 'hostname.domain.my' то последнее выполнится быстрее всего, а следовательно, регрессия налицо даже без сравнения с другими версиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:57 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
WildSeryСимонов Денис, Перевожу: регрессия ожиданий. Думал что будет "ооо!", а оно "нуууу".Не так! Оно "ой-йо-о-о-о-о-о..." ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:58 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
bsv9С регулярными вфражениями в FB все очень плохо. http://tracker.firebirdsql.org/browse/CORE-5854 Прям всё ? Или ВСЁ ?! :) И зачем постить ссылку на тикет, закрытый как дубликат ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:00 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_devрегрессия налицоНепонимание употребляемых слов - вот что на лице. PS проблему с быстродействием SIMILAR TO в некоторых случаях никто не отрицает ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:05 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
hvladPS проблему с быстродействием SIMILAR TO в некоторых случаях никто не отрицаетЯсно! Чо делать-то? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:14 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_devЧо делать-то? :) Вариант 1: Открыть исходники, исправить, запуллить реквест. Вариант 2: Забыть о существовании регэкспов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:20 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
hvladИ зачем постить ссылку на тикет, закрытый как дубликат ? В оригинальном тикете слишком много кода. В этом тикете, по моему, понятнее показана проблема - на примере одного регекспа. Проблема с регулярными выражениями началась в FB 3. И до сих пор не решена. Не аккуратно написанное выражение может очень-очень надолго завесить серевер со 100% утилизацией процессора. Например, вот это: Код: sql 1.
В 2.5 таких проблем не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:26 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_devhvladPS проблему с быстродействием SIMILAR TO в некоторых случаях никто не отрицаетЯсно! Чо делать-то? :)1. Пинать трекер 2. Взять готовую udf, правда там скорее всего будет POSIX синтаксис regexp'ов, а он отличается от SQL варианта 3. Улучшить реализацию в FB, там нет ничего военного и в инете куча кода для regexp'ов. Единственная сложность - отличие POSIX и SQL синтаксиса ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:29 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
bsv9Проблема с регулярными выражениями началась в FB 3... ...В 2.5 таких проблем не былоОчень сомневаюсь. Я не помню, чтобы в 3-ке трогали этот код. Если же это действительно так, то имеет смысл опять же пинать трекер. Но с аргументами. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:30 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
hvladОчень сомневаюсь. Я не помню, чтобы в 3-ке трогали этот код. Хм, дейстивтельно, FB 2.5 так же глухо зависает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:39 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_devрегрессия налицо даже без сравнения с другими версиями.Записал в блокнотик. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 09:29 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
WildSery, а определения "линейная зависимость" и "линейная функция" в твоём блокнотике уж есть? 😏 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 09:50 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
rdb_dev, Для таких банальностей и гугль сойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 10:08 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Ещё немного поисследовал проблему... Оказалось, что "SIMILAR TO" очень капризен не только к сложным выражениям, но и к символам, отсутствующим в лидирующих вариациях паттернов, указанных в выражении через "|". Так например простое выражение: Код: plaintext
Код: plaintext
В результате, приходится не только разбивать строку на удобоваримые части, но и перед началом их проверки исключить возможность появления незнакомых паттернам символов. Для проверки корректности строки с FQDN написал функцию (может ещё кому пригодится): Национальные имена доменов не поддерживаются Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 11:20 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Похоже проще написать UDF/R-ку в коей использовать любую удобную реализацию регулярок. Например из ICU , которая и так используется сервером. :) Собственно в коде сервера можно было бы именно её и вызвать, предварительно странслировав синтаксис, если нужно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:41 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Рано я обрадовался, что нашёл решение... Оказалось, что при экранировании неразрешённых символов, поток сервера вешается от неизвестного символа '+' даже на элементарнейшем паттерне: Код: plaintext
Пришлось переписать функцию Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 13:17 |
|
Серьёзная регрессия регулярных выражений в FB4.0
|
|||
---|---|---|---|
#18+
Если смотреть по коду (SimilarToMatcher.h), то конструкция x{n,m} преобразуется в x{n}(x?){m-n} . Что вызывает комбинаторный взрыв при неудаче. Так что просто не пользуйся конструкцией повторения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 13:50 |
|
|
start [/forum/topic.php?fid=40&fpage=21&tid=1560603]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 160ms |
0 / 0 |