Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 02.02.2012, 19:24   #46
 Пехотинец
Аватар для Puzer
 
Puzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личность
Регистрация: 02.09.2009
Сообщений: 55
Популярность: 1249
Сказал(а) спасибо: 7
Поблагодарили 191 раз(а) в 37 сообщениях
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от SinyssПосмотреть сообщение
Я тебя разочарую, по факту оно идет через последовательный подбор, просто вот эти автоматы строятся регуляркой, а не программистом... выигрыша в скорости они не дают...
Как работают эти автоматы: перебираем символы пока не найдется такой который переведет автомат во 2е состояние, потом в 3е и тд. т.е. тупо проход по строке... так же как и у строк
PS: под "подбором" я имел ввиду что мы проходим по строке и сравниваем символы...

Но перебор идёт не всех символов, в отличии от IndexOf
И думаешь программист построит код лучше и эффективней чем машина?

Возвращаясь к теме, на практике парсить html страничку лучше регуляркой, и это будет быстрее, я с этим сталкивался и задавался этим вопросом.
________________
  Ответить с цитированием
Старый 02.02.2012, 19:32   #47
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от PuzerПосмотреть сообщение
Но перебор идёт не всех символов, в отличии от IndexOf
И думаешь программист построит код лучше и эффективней чем машина?

Возвращаясь к теме, на практике парсить html страничку лучше регуляркой, и это будет быстрее, я с этим сталкивался и задавался этим вопросом.

Вообще то всех...
Да, поскольку он задает точные, команды(которые будет после еще оптимизированны компилятором), а регулярка будет еще строить этот автомат, держать в памяти все состояния и переходы...
  Ответить с цитированием
Старый 02.02.2012, 21:23   #48
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от SinyssПосмотреть сообщение
последовательный подбор символов

"Перебор" пожалуйста, если вам не трудно, а то передергивает..
Цитата:
Сообщение от SinyssПосмотреть сообщение
который надо еще распарсить

Никто не запрещает заранее скомпилировать регулярку (RegexOptions.Compiled)
Цитата:
Сообщение от PuzerПосмотреть сообщение
никак не последовательный подбор символов

1. "Перебор", будьте так любезны
2. Ай?! Чаво? Ну-ка просветите, они должно быть молятся, в ожидании маны небесной?

Во избежание холиваров и вытекающих из них баттхёртов , перед публикацией последующих постов прошу всех желающих ознакомиться:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Далее:
1. IndexOf возвращает первое вхождение подстроки, либо -1 в случае отсутствия оной. Еще раз - если искомая подстрока имеет место, то функция по всей строке не проходит. мелкомягкие все-таки тоже не мyдаки..
2. Регекспы в случае с dfa машинами проходят всю строку, поскольку ищет самое длинное соответствие. При nfa алгоритме все еще сложнее - из-за возвратов. Ищет первое вхождение подстроки. posix nfa - тоже самое, ищет самое длинное вхождение. .Netовская реализация представляет собой лучшие (по заверениям мелкософта) функции nfa машины + полезная "отсебятина".
=> реги в принципе не могут быть быстрее цикла сверяющего конкретное с конкретным.
3. Регулярки это удобно, и не надо извращаться, вы не заметите разницы во скорости между работой реги и вашего, написанного, очевидно, среди ночи, (о вас не знаю и судить не могу, но в подавляющем большинстве случаев 6ыдло-) кода.
4. Использование регулярных выражений уберегает вас от множества ошибок, и болезненных ощущений в нижней части позвоночника - при написании велосипедов случайно поставленный злобным юзером пробел подле какой-нибудь скобки ой-ей-ей как подпортит вам кровушку, когда вы будете ломать голову - от чего ж этот ваш "сверхскоростной" парсер игнорирует сию строку, а заметить тот самый пробел пол-пятого ночи ваш мозг не пожелает, более чем уверен.
5. Если есть готовый класс для работы с имеющими свою четкую структуру - используйте его, не стесняйтесь, это вовсе не грех, а от задержки в миллион-другой колебаний процессора этот нахальный пользователь не умрет.. А вот вы сможете поспать на пару часов дольше.

Добавлено через 6 минут
Цитата:
Сообщение от SinyssПосмотреть сообщение
держать в памяти все состояния и переходы

Сколько у вас ram?)
А на буржуйских машинках ставят по 8, по 16 GiB.. XXI век как-никак, на серверах овер 128GiB озу, вы несколько килобайтов жалеете?
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой

Последний раз редактировалось •theSaboteur•; 02.02.2012 в 21:44. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 03.02.2012, 00:51   #49
 Разведчик
Аватар для Hermeska
 
Hermeska на правильном пути
Регистрация: 13.01.2012
Сообщений: 4
Популярность: 70
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
вы несколько килобайтов жалеете?

Из килобайт вырастают мегабайты, для 1 сайта делал парсер - практический пример страница там в районе 600кб - не мало, верно? Простыми IndexOf-ами, Split-ами и тп. парсится все в доли секунд с выделением памяти в 6-8 метров на 10 таких страничек, но забыл "убивать" отработанное и составили потери в 4-8 метров, но как же я был убит, когда я начитавшись про регексы, какая эта крутая вещь и тд и тп решил потестить, извините, для нетбука 80-120 метров со страниц в 600 кб - это уже перебор, в конечном итоге после оптимизации на все 10 страниц вылетало по сравнению с 4-8 метрами 60-90 метров....Да, для супер-пупер машин это раз плюнуть, но для нетбуков это дофига и быдлятский код именно с регексами ИМХО просто так налево и направо раскидываться памятью - признак не ок кодера!
  Ответить с цитированием
Старый 03.02.2012, 14:30   #50
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Парсинг запросов

Hermeska, для слабых машин, высоких скоростей и точных вычислений существует си и ассемблер, а дотнет предназначен для упрощения жизни кодера.
Да и регекс составить по-разному можно))
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 03.02.2012, 14:56   #51
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Hermeska, для слабых машин, высоких скоростей и точных вычислений существует си и ассемблер, а дотнет предназначен для упрощения жизни кодера.

Ты этой фразой заявил "C# для *****кода"...
На шарпе можно писать хороший, быстро работающий код, другое дело что он не везде необходим...
  Ответить с цитированием
Старый 03.02.2012, 15:50   #52
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Парсинг запросов

Sinyss, Браво!!! Прозвучало очень так.. Очень!
Однако, очевидно - что-то у меня с головой не так,
но в моем представлении эти слова никоим образом нельзя интерпретировать как "C# для гoвнокода".
Прочтите еще раз мой пост, уважаемый, и вы увидите что я лишь высказал мнение,
что .Net значительно облегчает тяжкое бремя программиста,
а от исполняемого виртуальной машиной программного кода нельзя требовать сверхпроизводительности.

Если вдруг, не дай Господи, Вы вновь увидите что-либо связанное с гoвнокодом - могу посоветовать словарь Даля.
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 03.02.2012, 18:08   #53
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
дотнет предназначен для упрощения жизни кодера.

Просто кодеру удобней городить *****код, чем писать нормально...
Простой пример:
Лабораторная, суть которой заключается в подсветке всех элементов языка(например паскаль), надо выделять отдельными цветами цифры, строки, коментарии, операции, переменные, зарезервированные слова и тд.
Мой код на входных данных в 1к строчек работал ~секунду(округлено вверх), код одногрупника, построенный на регулярках, на 15 строчках - больше 30 секунд...
Да, его код был более чем понятен, короткий, лаконичный, но это не компенсировало потерь в быстродействии. Он сделал так не потому что не умел по другому, а просто потому что так было УДОБНЕЕ.
Код удобный программисту(в 99% случаев) = говн-код.
Обработка входных текстовых данных через Split, множество регулярок и другие тяжелые структуры возможна, она удобна для программиста, но подайте на вход тяжелый файл и вы заметите что то не так...
  Ответить с цитированием
Старый 03.02.2012, 19:12   #54
 Пехотинец
Аватар для Puzer
 
Puzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личность
Регистрация: 02.09.2009
Сообщений: 55
Популярность: 1249
Сказал(а) спасибо: 7
Поблагодарили 191 раз(а) в 37 сообщениях
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от SinyssПосмотреть сообщение
...Мой код на входных данных в 1к строчек работал ~секунду(округлено вверх), код одногрупника, построенный на регулярках, на 15 строчках - больше 30 секунд...
.


Ну раз перешли на *****кодеров...ты вы им являетесь, как впрочем и ваш друг. Почему? Вы потому что код в 1к строк, основаный не на рациональном варианте. Вы же ещё будете в группе разработчиков работать, вы представляете какого им будет читать ваш код ? Ваш однокурсник выбрал более рациональный алгоритм решения данной задачи, но видно намудрил с объявлениями\регулярками\циклами, в общем не провёл оптимизацию алгоритма.

Лично у меня программы для исправления базы данных, основанная на регулярках, работает со скоростью примерно секунды 1-2 на 300-400 мб файла, при том она полностью изменяет структуру документа. При том через эту программу проходили документы размером в 9 гб (читал БД по кускам правда)
________________
  Ответить с цитированием
Старый 03.02.2012, 20:57   #55
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Парсинг запросов

Sinyss, боюсь представить что написал ваш многоуважаемый одногрупник, в частности количество возвратов...
Ранее я уже упоминал - регулярное выражение, равно как и программный код, можно написать по-разному.
Возможно вы поторопились-таки с выводами - это вовсе не плохая технология, пост выше (#54) подтверждение тому.
Кто-то кстати упоминал Фриддла - глянул когда-то пару первых страниц...
Вступление к сожалению отбило у меня желание читать сие произведение - больно много было воды про "мыслить регулярными выражениями" и тому подобного, однако встречал мнение, что книжонка достойная.
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 03.02.2012, 21:34   #56
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Парсинг запросов

Цитата:
Сообщение от PuzerПосмотреть сообщение
Ну раз перешли на *****кодеров...ты вы им являетесь, как впрочем и ваш друг. Почему? Вы потому что код в 1к строк, основаный не на рациональном варианте. Вы же ещё будете в группе разработчиков работать, вы представляете какого им будет читать ваш код ? Ваш однокурсник выбрал более рациональный алгоритм решения данной задачи, но видно намудрил с объявлениями\регулярками\циклами, в общем не провёл оптимизацию алгоритма.

Лично у меня программы для исправления базы данных, основанная на регулярках, работает со скоростью примерно секунды 1-2 на 300-400 мб файла, при том она полностью изменяет структуру документа. При том через эту программу проходили документы размером в 9 гб (читал БД по кускам правда)

Перечитайте мой пост.
Мой алгоритм(без кода GUI и тд.) занимал 40-70 строк(сейчас уже не помню), на вход я подавал 1к строк...
•theSaboteur•, я не говорил что технология плохая, я говорю что злоупотреблять не стоит...
  Ответить с цитированием
Старый 04.02.2012, 03:35   #57
Читер-спонсор
 Рыцарь-защитник
Аватар для Hermein
 
Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(Hermein сломал счётчик популярности :(
Регистрация: 14.01.2011
Сообщений: 633
Популярность: 28087
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 90
Поблагодарили 717 раз(а) в 374 сообщениях
Отправить сообщение для Hermein с помощью ICQ Отправить сообщение для Hermein с помощью Skype™
 
По умолчанию Re: Парсинг запросов

Развели бардак!

Цитата:
Сообщение от PuzerПосмотреть сообщение
примерно секунды 1-2 на 300-400 мб файла

это интересно во сколько потоков считывался файл???? или это просто так написать, похвастаться, насколько мы круты!....
Лололо-трололо все только на словах, на практике - удобно вам там с регулярками - идите пишите на них, не надо тут убеждать никого что это круто, модно, быстро и тп чушь нести, вы сначала посмотрите что регулярка делает, в рефлекторе прогоните(для особо долгих)....
Я напишу 2-3 парсера и будет все пахать и летать по чем свет стоит, а ну да чуть не забыл - типо говорили измени в документе что-нибудь и ваш УГ не будет работать, не заьывайте что и в регулярках все задается точно(для долгих - маска регулярки), так что решать каждому самому что выбирать, но аргументы к регуляркам,ИМХО только потому что там думать и париться особо не надо, в отличии от написания своих собственных парсеров, так сказать ЛЕНЬ.

ps: какой-то умник писал что регулярки надо юзать, а не работать со строковыми индексофами сабстрингами и тп... Для него(сам поймет кто) скажу еще раз - посмотри структуру регексов - сколько сот раз они используют Индексофы Сплиты и тд и тп
pps: закройте уже эту тему!

Последний раз редактировалось Hermein; 04.02.2012 в 03:39.
  Ответить с цитированием
Старый 04.02.2012, 15:08   #58
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Парсинг запросов

Hermein, читаем посты, читаем внимательно.
Цитата:
Сообщение от HermeinПосмотреть сообщение
типо говорили измени в документе что-нибудь и ваш УГ не будет работать

Где написано такое?))))
Читайте товарищ.
Цитата:
Сообщение от HermeinПосмотреть сообщение
все задается точно(для долгих - маска регулярки),

В регексе достаточно впихнуть всего пару символов, в ситуациях где велосипедописатели пихают по несколько циклов.
И вновь говорю - когда вы будете сидеть в половину пятого ночи, вы напишите такой код, увидев который утром умрете в ужасе.
Конкретно о том злополучном пробеле - написать @"\s*" куда проще чем писать две лишних строчки -_-

Реги позволяют быстро и компактно написать код парса данных и в большинстве случаев они работают с удовлетворительной скоростью.

Цитата:
Сообщение от HermeinПосмотреть сообщение
какой-то умник писал что регулярки надо юзать

Еще раз повторяю - читайте посты, а не фантазируйте, умник.
Цитата:
Сообщение от HermeinПосмотреть сообщение
посмотри структуру регексов

Хоть мельком видели .net'овскую реализацию регулярок?
Может еще и мелкософт начал сорсы в паблик выкладывать?)
После взгляда на ваш пост возникает сомнение по поводу того, что вы сидели с рефлектором
Цитата:
Сообщение от HermeinПосмотреть сообщение
Я напишу 2-3 парсера и будет все пахать и летать по чем свет стоит

Вот я встречал несколько раз эдаких вот самописцев - разрыдаться можно при виде ихних "велосипедов"...
Цитата:
Сообщение от HermeinПосмотреть сообщение
сколько сот раз они используют Индексофы

А вы стало быть не используете?
И "дяди" писавшие .нэт не дураки - нужные данные, более чем уверен, хранятся в памяти.
-------------


Все делать самому это конечно хорошо, и к сожалению я этим сильно болею, но надо различать ситуации - порой можно и нужно использовать готовую продукцию, ибо время - это время, его часто не хватает.

Резюме:
Я бы сейчас умер со-смеху, не будь все это так печально.
Очевидно вам, умный человек, не слишком часто приходилось писать код в сжатые сроки...
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой

Последний раз редактировалось •theSaboteur•; 04.02.2012 в 15:47.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 03:21.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net