Re[5]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 29.07.16 08:33
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Сочувствую боли, которую ты причинил себе.

V>>У меня не было боли.
A>Откуда ж ты о ней знаешь?
Потому что как и все наступил на эти раскиданные грабли, но быстро увернулся

V>>Отладил и забыл. А вот что-то серьёзное на перле писать я уже не буду. Благо есть языки получше.

A>Ага, нахватаются где-то вершков про встроенные переменные, а потом язык у них виноват.
Да, виноват, потому что является поставщиком скрытых "Performance issue" и других "прелестей"

A>Другие потом читают написанный первыми код и думают: «Капец язык, ничего не понять!»

Так это недолго, скоро нечего будет читать
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 29.07.16 08:46
Оценка: +1
Здравствуйте, Vain, Вы писали:

A>>>>Сочувствую боли, которую ты причинил себе.

V>>>У меня не было боли.
A>>Откуда ж ты о ней знаешь?
V>Потому что как и все наступил на эти раскиданные грабли, но быстро увернулся

Прочувствовал, значит.

A>>Ага, нахватаются где-то вершков про встроенные переменные, а потом язык у них виноват.

V>Да, виноват, потому что является поставщиком скрытых "Performance issue" и других "прелестей"

Как они могут быть скрытыми, если они явно описаны в документации? Ты пытаешься использовать возможность языка, не прочитав документацию, а потом винишь язык в том, что эта возможность работает не так, как ты себе напридумывал.

A>>Другие потом читают написанный первыми код и думают: «Капец язык, ничего не понять!»

V>Так это недолго, скоро нечего будет читать

Отладил один скрипт и туда же — эксперт по умирающим языкам.
Re[7]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 29.07.16 09:04
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>>>Сочувствую боли, которую ты причинил себе.

V>>>>У меня не было боли.
A>>>Откуда ж ты о ней знаешь?
V>>Потому что как и все наступил на эти раскиданные грабли, но быстро увернулся
A>Прочувствовал, значит.
Тебя видимо попаболь берёт, что сам мучился и продолжаешь мучаться, а другие нет

A>>>Ага, нахватаются где-то вершков про встроенные переменные, а потом язык у них виноват.

V>>Да, виноват, потому что является поставщиком скрытых "Performance issue" и других "прелестей"
A>Как они могут быть скрытыми, если они явно описаны в документации?
Ну я говорю, на заборе тоже много чего пишут...

A>Ты пытаешься использовать возможность языка, не прочитав документацию, а потом винишь язык в том, что эта возможность работает не так, как ты себе напридумывал.

Представь, даже не пытался использовать, просто решил проверить.

A>>>Другие потом читают написанный первыми код и думают: «Капец язык, ничего не понять!»

V>>Так это недолго, скоро нечего будет читать
A>Отладил один скрипт и туда же — эксперт по умирающим языкам.
Зачем мне становиться экспертом г-на?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Отредактировано 29.07.2016 9:07 Vain . Предыдущая версия .
Re[8]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 29.07.16 09:29
Оценка:
Здравствуйте, Vain, Вы писали:

V>>>>>У меня не было боли.

A>>>>Откуда ж ты о ней знаешь?
V>>>Потому что как и все наступил на эти раскиданные грабли, но быстро увернулся
A>>Прочувствовал, значит.
V>Тебя видимо попаболь берёт, что сам мучился и продолжаешь мучаться, а другие нет

Какая разница, что там у меня? Ты ж либо на своём опыте ощущения описываешь, либо додумал, опять же основываясь на своём опыте.

A>>Как они могут быть скрытыми, если они явно описаны в документации?

V>Ну я говорю, на заборе тоже много чего пишут...

Официальная документация по-твоему — забор? Ясно-понятно.

A>>Ты пытаешься использовать возможность языка, не прочитав документацию, а потом винишь язык в том, что эта возможность работает не так, как ты себе напридумывал.

V>Представь, даже не пытался использовать, просто решил проверить.

Это и есть использование.

A>>Отладил один скрипт и туда же — эксперт по умирающим языкам.

V>Зачем мне становиться экспертом г-на?

Тебе виднее, зачем ты им стал?
Re[9]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 29.07.16 20:30
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Прочувствовал, значит.

V>>Тебя видимо попаболь берёт, что сам мучился и продолжаешь мучаться, а другие нет
A>Какая разница, что там у меня? Ты ж либо на своём опыте ощущения описываешь, либо додумал, опять же основываясь на своём опыте.
а ты не на своём опыте мне свои ощущения начал приписывать?

A>>>Как они могут быть скрытыми, если они явно описаны в документации?

V>>Ну я говорю, на заборе тоже много чего пишут...
A>Официальная документация по-твоему — забор? Ясно-понятно.
Любая. Всё надо проверять.

A>>>Ты пытаешься использовать возможность языка, не прочитав документацию, а потом винишь язык в том, что эта возможность работает не так, как ты себе напридумывал.

V>>Представь, даже не пытался использовать, просто решил проверить.
A>Это и есть использование.
Нет, изначально оно не использовалось.

A>>>Отладил один скрипт и туда же — эксперт по умирающим языкам.

V>>Зачем мне становиться экспертом г-на?
A>Тебе виднее, зачем ты им стал?
Зачем ты бъёшь жену?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[10]: как регекспом убить производительность
От: мыщъх США http://nezumi-lab.org
Дата: 29.07.16 20:35
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, anonymous, Вы писали:


A>>Официальная документация по-твоему — забор? Ясно-понятно.

V>Любая. Всё надо проверять.
а разве можно как-то иначе?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[11]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 29.07.16 20:36
Оценка:
Здравствуйте, мыщъх, Вы писали:

A>>>Официальная документация по-твоему — забор? Ясно-понятно.

V>>Любая. Всё надо проверять.
М>а разве можно как-то иначе?
Про то и речь, что документация здесь не особо играет рояль.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[10]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 29.07.16 22:35
Оценка:
Здравствуйте, Vain, Вы писали:

A>>Какая разница, что там у меня? Ты ж либо на своём опыте ощущения описываешь, либо додумал, опять же основываясь на своём опыте.

V>а ты не на своём опыте мне свои ощущения начал приписывать?

Я только что описал, на основании чего сделал свои выводы.

A>>>>Как они могут быть скрытыми, если они явно описаны в документации?

A>>Официальная документация по-твоему — забор? Ясно-понятно.
V>Любая. Всё надо проверять.

При чём тут проверка? Я бы понял тебя, если бы обнаруженное тобой поведение не соответствовало описанию. Но в этом случае не так.

V>>>Представь, даже не пытался использовать, просто решил проверить.

A>>Это и есть использование.
V>Нет, изначально оно не использовалось.

Но потом-то использовалось. Пробовал — значит пользовался.

V>>>Зачем мне становиться экспертом г-на?

A>>Тебе виднее, зачем ты им стал?
V>Зачем ты бъёшь жену?

Это не я.
Re[12]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 29.07.16 22:40
Оценка:
Здравствуйте, Vain, Вы писали:

V>Про то и речь, что документация здесь не особо играет рояль.


У тебя есть описание — ты можешь его проверить. У тебя нет описания — проверять тебе нечего, кроме своих догадок. Но инструмент не виноват, что у тебя с догадками проблемы.
Re[13]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 30.07.16 15:51
Оценка:
Здравствуйте, anonymous, Вы писали:

V>>Про то и речь, что документация здесь не особо играет рояль.

A>У тебя есть описание — ты можешь его проверить.
Я проверяю код а не описание, что за чушь?

A>У тебя нет описания — проверять тебе нечего, кроме своих догадок. Но инструмент не виноват, что у тебя с догадками проблемы.

Бред сивой кобылы
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[11]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 30.07.16 15:54
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Какая разница, что там у меня? Ты ж либо на своём опыте ощущения описываешь, либо додумал, опять же основываясь на своём опыте.

V>>а ты не на своём опыте мне свои ощущения начал приписывать?
A>Я только что описал, на основании чего сделал свои выводы.

Прочувствовал, значит.

Тут нет оснований, одни догадки.

A>>>>>Как они могут быть скрытыми, если они явно описаны в документации?

A>>>Официальная документация по-твоему — забор? Ясно-понятно.
V>>Любая. Всё надо проверять.
A>При чём тут проверка? Я бы понял тебя, если бы обнаруженное тобой поведение не соответствовало описанию. Но в этом случае не так.
Самое лучшее описание это проверенное тобой лично, что я и сделал.

V>>>>Представь, даже не пытался использовать, просто решил проверить.

A>>>Это и есть использование.
V>>Нет, изначально оно не использовалось.
A>Но потом-то использовалось. Пробовал — значит пользовался.
Ты читать умеешь? Написал же что решил проверить.

V>>>>Зачем мне становиться экспертом г-на?

A>>>Тебе виднее, зачем ты им стал?
V>>Зачем ты бъёшь жену?
A>Это не я.
Т.е. кто-то бъёт твою жену, а ты просто смотришь?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[12]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 30.07.16 19:04
Оценка:
Здравствуйте, Vain, Вы писали:

A>>>>Какая разница, что там у меня? Ты ж либо на своём опыте ощущения описываешь, либо додумал, опять же основываясь на своём опыте.

V>>>а ты не на своём опыте мне свои ощущения начал приписывать?
A>>Я только что описал, на основании чего сделал свои выводы.
V>Прочувствовал, значит. Тут нет оснований, одни догадки.

Ты вообще читаешь, прежде чем ответить? Я специально для тебя цитирование оставил.

A>>При чём тут проверка? Я бы понял тебя, если бы обнаруженное тобой поведение не соответствовало описанию. Но в этом случае не так.

V>Самое лучшее описание это проверенное тобой лично, что я и сделал.

Демагогия.

A>>Но потом-то использовалось. Пробовал — значит пользовался.

V>Ты читать умеешь? Написал же что решил проверить.

Ну. Пользовался.

V>>>>>Зачем мне становиться экспертом г-на?

A>>>>Тебе виднее, зачем ты им стал?
V>Т.е. кто-то бъёт твою жену, а ты просто смотришь?

Нет, кто-то пытается уйти от обсуждения своей экспертной области.
Отредактировано 30.07.2016 19:10 anonymous . Предыдущая версия .
Re[14]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 30.07.16 19:07
Оценка:
Здравствуйте, Vain, Вы писали:

A>>У тебя есть описание — ты можешь его проверить.

A>>У тебя нет описания — проверять тебе нечего, кроме своих догадок. Но инструмент не виноват, что у тебя с догадками проблемы.
V>Бред сивой кобылы

Так себе аргумент.
Re[15]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 31.07.16 00:31
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>У тебя есть описание — ты можешь его проверить.

A>>>У тебя нет описания — проверять тебе нечего, кроме своих догадок. Но инструмент не виноват, что у тебя с догадками проблемы.
V>>Бред сивой кобылы
A>Так себе аргумент.
когда чушню пишут — нормальный
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: как регекспом убить производительность
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 31.07.16 05:43
Оценка: 1 (1)
Здравствуйте, anonymous, Вы писали:

A>Не знаю. Могу только предположить, что оптимизация именно этих выражений, как часто используемых. Точнее второго: движок сразу понимает, что смотреть нужно конце, а не проверять, тянется ли найденное совпадение до конца.


A>Вот это уже не будет так работать:

A>
A>$str =~ s/(a|\s)+$//;
A>


5.20.3 — не тормозит.
The God is real, unless declared integer.
Re[6]: как регекспом убить производительность
От: anonymous Россия http://denis.ibaev.name/
Дата: 31.07.16 06:47
Оценка:
Здравствуйте, netch80, Вы писали:

A>>Вот это уже не будет так работать:

A>>
A>>$str =~ s/(a|\s)+$//;
A>>

N>5.20.3 — не тормозит.

Значит оптимизировали. Я на 5.18 проверял.
Re[13]: как регекспом убить производительность
От: Vain Россия google.ru
Дата: 31.07.16 11:56
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>При чём тут проверка? Я бы понял тебя, если бы обнаруженное тобой поведение не соответствовало описанию. Но в этом случае не так.

V>>Самое лучшее описание это проверенное тобой лично, что я и сделал.
A>Демагогия.
лучше чем твой тупенький троллинг

V>>>>>>Зачем мне становиться экспертом г-на?

A>>>>>Тебе виднее, зачем ты им стал?
V>>Т.е. кто-то бъёт твою жену, а ты просто смотришь?
A>Нет, кто-то пытается уйти от обсуждения своей экспертной области.
нет, кто то пытается троллить и не выходит
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: как регекспом убить производительность
От: _NN_  
Дата: 01.08.16 20:29
Оценка:
Здравствуйте, Кодт, Вы писали:

В копилку могу добавить и антипаттерн вида:
^prefix.+


Казалось бы тут можно оптимизировать и остановиться сразу как нашли начало, однако '.' означает всё кроме (в зависимости от флагов) символа новой строки.
И получаем полное сканирование входной строки.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: как регекспом убить производительность
От: cures Россия cures.narod.ru
Дата: 02.08.16 23:49
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>Движок регекспа запнулся и устроил квадратичный забег с откатами.


Строго говоря, не регекспом, а плохим движком, в чём они честно и признаются: "simple backtracking Regex engine". Это всё ещё поди в похапе каком-нибудь было. Сам по себе регексп вполне нормальный, автоматный. А вот креативные движки, чтобы любая кухарка за пять минут сделала себе магазин и бложег — зло. Особенно когда на них делают нагруженные сайты. Особенно "дванольные", "динамические" бесят: зайдёшь на курсеру или хакерранк, откроешь несколько страниц — и сразу и лиса и хром хоть на атоме хоть на i5 пухнут и дохнут, затыкая весь брафсер (лиса) пока не прочухаются. Чем статика не устраивает? Обязательно что-нибудь должно попукивать и похрюкивать?
Мне как-то знакомая кидала ссылку на сайтик, который слабала на каком-то доморощенном "портале" викс с конструктором: там на дефолтном заднем плане звёзды летят, он практически весь закрыт собственно страничкой, на несколько пикселей торчит, но это не мешает движку их таки отрисовывать (хотя потом и не показывать), видимо, попиксельно, а то ещё и с рей-трейсингом, скорее всего на жабаскрипте. "Хлебнули мы ещё фанты — и тормознули автобус с омоном крутейший i5 с 16 гигами оперативы".
Re[3]: как регекспом убить производительность
От: cures Россия cures.narod.ru
Дата: 03.08.16 00:07
Оценка:
Здравствуйте, мыщъх, Вы писали:

К>>>Мы же понимаем, как легко это делается регекспами: s/\s+$//

М>начнем с того, что \s это не только пробел, но и табуляция. жду рабочего примера на асме или си.

На С — легко, если только ASCII, то есть быстрый макрос isspace, помним позицию последнего непробельного, если уткнулись в педаль — перекидываем туда позицию для дальнейшего вывода.

М> да, кодировки могут быть разные.


Кодировки в этот момент обычно не должны сильно парить, строка уже должна без кодировок в четырёхбайтном представлении быть. Если Вы, конечно, не разработчик извращений типа Julia, где внутреннее представление UTF-8. При этом проверка на пробельность чуть сложнее, но всё равно за константу, причём уже наверняка реализована, потому алгоритм не меняется.

М> при этом желательно чтобы по времени разработки и по наглядности кода вы не сильно отличались от регулярки.


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

М> ну а производительность регулярок -- гуглим статьи Russ Cox'a. так что проблема не в регулярках, а в реализациях.


+1, и надо будет почитать на досуге.

М> почему в популярных языках используются такие реализации -- это другой вопрос.


Почему серьёзные сайты делают на "популярных языках" — это ещё более другой вопрос
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.