Владимиp Палант
Мне всё ещё интересно как ты замерял скорость работы. Нужно же мне как-то сравнивать результаты своих изменений...
Отсутствует
Lain_13
Ладно, но никаких гарантий не даю. http://adblockplus.org/trash/pattern_matching.html - в поле "enter own filters" копируешь свои фильтры (без правил скрытия), ставишь галочку на "modified Boyer-Moore algorithm" и вперед. Страничка старая и алгоритм не совсем соответвует актуальной версии, но достаточно близок. Сделать нормальное решение для измерения быстродействия никак руки не дойдут.
Отредактировано Владимиp Палант (15-12-2008 20:11:34)
Отсутствует
А есть ли возможность настроить AdBlock Plus таким образом, чтобы он был активен только на нескольких сайтах (10, от силы 20), а на остальных вообще никак себя не проявлял с целью экономии процессорного времени и ускорения работы Fx?
Прочитал документацию на оф. сайте, там ясно написано про исключение сайтов (whitelisting - на всех реклама фильтруется, на "белых" - нет), а можно ли сделать наоборот?
Например, заwhitelist'ить *.COM, *.RU и т.п., а дальше писать исключения из этих правил?
Отсутствует
gunwitch
Нет, правила-исключения не имеют исключений.
Не проще ли персонально для нужных сайтов самому настроить правила блокировки и не пользоваться подписками?
Отредактировано Lain_13 (17-12-2008 02:48:53)
Отсутствует
gunwitch
Тогда не пользуйтесь подписками, а сделайте правила только для этих нескольких сайтов.
Алгоритм проверки таков, что предлагаемое Вами вряд-ли может ускорить что-то. Говоря немного упрощённо, вначале ABP сверяет адреса только с любыми восемью знаками подряд, не прерываемыми звёздочками, из каждого фильтра. Если совпадает, то адрес сверяется со всем фильтром. По сути, это примерно то же, что предлагаете Вы, вначале проверялось бы доменное имя, а потом адреса сверялись бы с фильтрами. Разница в том, что нынешний алгоритм подходит для всех.
Подробнее - тут
Отредактировано Радик245 (17-12-2008 10:34:17)
Отсутствует
Lain_13, Радик245
Не проще ли персонально для нужных сайтов самому настроить правила блокировки и не пользоваться подписками?
Тогда не пользуйтесь подписками, а сделайте правила только для этих нескольких сайтов.
Алгоритм проверки таков, что предлагаемое Вами вряд-ли может ускорить что-то.
Разумеется, подписками я и не собирался пользоваться, уж чего-чего, а самостоятельно написать фильтр, я способен
Возможно я не очень понятно написал, поэтому повторюсь:
я бы хотел, чтобы на большинстве сайтов AdBlock вообще не шевелился, т.е. только проверял присутствует ли сайт в списке "плохих сайтов" или нет.
Я читал про 8 уникальных символов, но дело-то в том, что реклама, в основном, идёт совсем не с тех адресов, которые мы посещаем, т.е., если я зашёл на www.badbadsite.ru, то баннеров, лежащих на badbadsite.ru/banners/ там не будет с вероятностью 95-98%.
Соответственно, правила фильтрации (даже если это НЕ регулярные выражения) будут проверяться на каждом из посещаемых сайтов. Именно этого я и хочу избежать, т.к. задать этот вопрос меня побудила необходимость установки Firefox+AdBlock на одном весьма и весьма старом компьютере, на котором даже подобный трюк может дать некоторый прирост производительности.
Отсутствует
gunwitch
При паре десятков правил на каждую ссылку тратится меньше миллисекунды времени. Даже с RuAdList на каждую ссылку больше 12 миллисекунд не уходит, как я понял. Тебя правда беспокоит это время?
Отсутствует
gunwitch
Если Adblock "не будет шевелиться", то как он узнает, что Вы зашли на такой-то сайт? Всё равно проверка, о чём я и пишу.
Я читал про 8 уникальных символов, но дело-то в том, что реклама, в основном, идёт совсем не с тех адресов, которые мы посещаем, т.е., если я зашёл на www.badbadsite.ru, то баннеров, лежащих на badbadsite.ru/banners/ там не будет с вероятностью 95-98%.
Ну и что? Пусть Вы заходите на www.badbadsite.ru, а реклама лежит на example.com/banners/
Вы создаёте правило example.com/banners/
Adblock Plus автоматически создаёт shotcut из восьми знаков, например, le.com/b
Постоянно проверяется совпадение адресов с le.com/b
Если совпало, то адрес проверяется на совпадение с example.com/banners/
Ваш вариант.
Постоянно проверяется совпадение адреса страницы с http://www.badbadsite.ru (в этом примере - 24 знака!)
Если совпало - проверяется совпадение адресов элементов страницы с le.com/b (ведь никто не собирается делать Adblock Plus gunwitch edition без всего лишнего для Вас)
Если совпало, то адрес проверяется на совпадение с example.com/banners/
Шустро будет?
Отредактировано Радик245 (17-12-2008 19:22:54)
Отсутствует
Lain_13
Даже с RuAdList на каждую ссылку больше 12 миллисекунд не уходит, как я понял.
О чём Вы? Вот я протестировал все блокирующие правила RuAdList, даже скрывающие поленился выбросить:
Results:
Time to load filters: 319ms
Average time for pattern matching: 32.4ms
Условия: процессор: 2,0 ГГц, ОЗУ 512 Мб., кроме Firefox, был запущен Download Master и некоторые другие программы.
И это при том, что в RuAdList около тысячи правил!
Единственное, чего не учитывает этот тест (точнее, неправильно учитывает из-за моей лени), так это фильтры скрытия, но их там немного.
Отредактировано Радик245 (17-12-2008 20:13:05)
Отсутствует
Радик245
У меня на компе average time приблизительно равен 12-13ms. Естественно это зависит от мощьности процессора. Кстати, основная нагрузка там на регулярках. Если их выкинуть у меня 5 ms получается.
А на рабочем компе у меня стабильно 6.6-6.7ms на всём RuAdList и 3.3-3.4 без регулярок. Что вообще мизер.
Отредактировано Lain_13 (17-12-2008 20:05:06)
Отсутствует
Радик245
Постоянно проверяется совпадение адреса страницы с http://www.badbadsite.ru (в этом примере - 24 знака!)
Если совпало - проверяется совпадение адресов элементов страницы с le.com/b (ведь никто не собирается делать Adblock Plus gunwitch edition без всего лишнего для Вас)
Если совпало, то адрес проверяется на совпадение с example.com/banners/
Шустро будет?
Я смотрю здесь на форуме сидят настоящие программисты - даже в примерах число символов считают
А логику в сказанном выше улавливаю не до конца.
Почему я хочу каким-либо образом настроить выборочное включение AdBlock'а:
Для того, что заблокировать рекламу, включённый АдБлок каким-то образом "просматривает" каждую страницу (или отлавливает открываемые браузером подключения - не важно), назовём это парсингом (сам мехнизм сейчас не так важен).
Тогда, IMO, однократная проверка вводимого в аддресс бар УРЛа (или УРЛа нового таба/окна) на предмет вхождения в список сайтов, на которых надо включаться, и включение парсинга ТОЛЬКО на них, будет занимать явно меньше времени чем парсинг КАЖДОЙ страницы, пусть и без проверки УРЛа в аддресс баре.
(NB: на сайтах, НЕ входящих в список, парсинг не включается - вся работа AdB+ ограничивается проверкой адреса просматриваемого сайта)
Ведь на среднестатистической современной странице, на мой взгляд, обычно не меньше 20-30 объектов, которые надо боработать - картинки, фреймы, скрипты, css,...
Какие бы там ни были миллисекунды и отличные алгоритмы с быстрыми хэшами и 8-ю символами, парсинг страницы займёт больше, чем проверка одного лишь адреса просматриваемого сайта.
А ещё его можно перед заходом на неправильные сайты ручками включать
Ага, пробовал. Про то, что надо отключить рекламу, почти всегда вспоминаешь, увидев первые баннеры
P.S.
Про миллисекунды: в компьютере, на котором я хочу организовать вышеописанное, стоит Pentium III - 500
Отредактировано gunwitch (18-12-2008 00:34:07)
Отсутствует
gunwitch
Про миллисекунды: в компьютере, на котором я хочу организовать вышеописанное, стоит Pentium III - 500
А попробуйте: возьмите этот или этот список и протестируйте его на этом компьютере, как [urlhttp://forum.mozilla-russia.org/viewtopic.php?pid=274726#p274726]здесь[/url] написано. Или свои правила потестируйте, ведь всё равно подписки использовать для нескольких сайтов нет смысла.
P.S. А что стряслось со списками Хакруса?
Отсутствует
gunwitch
Что-ж, начнём разбор полётов:
1. Давай разберёмся с терминологией. Вот ты взял слово парсинг, а что это такое не знаешь. Парсинг (eng. parse -- грамматический разбор, разбирать) подразумевает обработку некоего текста по заданному набору критериев с целью выделить из этого текста по критериям определённые конструкции. Собственно так раньше AdBlock разбирал страницы с целью поиска в них ссылок и их удаления. Это был один из методов поиска ссылок, от которого в последствии Владимир отказался.
2. Основным способом поиска ссылок был и остаётся перехват обращений к внешним ресурсам. Этот метод не имеет ничего общего с парсингом, так как разбирать кучу текста для получения ссылок не нужно. Мы уже имеем готовые ссылки, достаточно проверить на вхождение в каждую ссылку набора заранее заданных строк. Т.е. мы не теряем время на получение ссылок.
3. Теперь о методе поиска подстрок, как его объяснял Владимир и как его понял я. Каждая перехваченная ссылка разбивается на набор строк по 8 символов и для каждой такой строки считается хэш-код... Процедура оптимизирована, поэтому выполняется настолько быстро, что не играет роли. Далее происходит проверка на вхождение посчитанных кодов в список уникальных хэш-кодов заранее составленных для правил блокировки. В каждом правиле находится уникальная строка из 8 символов, для неё считается хэш-код и с ним потом происходит сравнение. Эта операция так же очень быстра, так как происходит сравнение числовых переменных, а не строковых. По найденным хэш-кодам берутся правила и производится их сравнение с запрашиваемым адресом. На этом этапе мы получаем от нуля до трёх правил для сравнения, операция сравнения строк не отличается стремительностью, но выполняется не для всего набора, а для нескольки правил из всего набора. Т.е. хоть это место и является достаточно медлительным, но из-за ограничения списка проверяемых строк и позиций, с которых начинается проверка тут задержка так же минимальна. Следуает учесть то, что правила состоящие менее чем из 8 символов проверяются всегда, так как для них нет хэш-кода. Естественно это замедляет выполнение. Таких правил нужно избегать...
Т.е. для обычных правил блокировки даже на таком древнем артефакте, как указанная тобой машинка, проверка по нескольким десяткам правил выполняется настолько стремительно, что совершенно не играет роли в обработке страницы самим фоксом. Он её отрисовывать будет дольше, чем ссылки будут проверяться. Вот именно поэтому не имеет никакого смысла ограничивать набор сайтов, для которых выполняется проверка.
В принципе то, о чём ты спрашиваешь, реализуемо. Но это усложнит шаг проверки хэш-кодов, так как понадобиться помимо основной таблицы хэшей правил хранить для каждого сайта по подтаблице, с которой нужно сверяться только если имя сайта подходит под определённый шаблон... Вот только заметного ускорения проверки мы от этого не получим, вот такие вот дела. Возможно ты его получишь экономя до 20мс при загрузке всего сайта (в чём я сильно сомневаюсь), но все остальные получат только лишние тормоза.
Отредактировано Lain_13 (18-12-2008 12:19:33)
Отсутствует
Радик245
P.S. А что стряслось со списками Хакруса?
Идёт перенаправление на popuptraf.ru — это наверно один из его баннеров глючит. У Хакруса на сайте всплывающей рекламы больше, чем на некоторых варезниках.
Отсутствует
Sid
Жесть какая.
Это баннерные сети ему мстят. Не иначе!
Кстакти, тебе не кажется, что RuAdList + Hackrus это немного многовато?
Отредактировано Lain_13 (18-12-2008 13:23:55)
Отсутствует
Lain_13
Возможно ты его получишь (эокномя 20-40 ms)
Да, целых 20, а то и 40 миллисекунд.
не кажется, что RuAdList + Hackrus это немного многовато?
у меня ещё больше стоит - ничего, вроде не мешает.
gunwitch
Я смотрю здесь на форуме сидят настоящие программисты - даже в примерах число символов считают
Если бы не Вы, я бы ничего не считал - работает, да и ладно. О том, что свиньи в апельсинах разбираются лучше, чем я в программировании, молчу уже...
Могу Вам предложить создавать как можно более общие исключения для сайтов, например,
@@wiki
@@.gov/ (это для тех, кто бывает на американских гос. сайтах, просто не могу придумать более нужный домен, в котором нет рекламы)
и тому подобное.
Понимаю, что это не то, что Вы хотели, но всё же.
Всем
Идёт перенаправление на popuptraf.ru
И самих списков нет. Яндекс пишет ошибку 404. Кто-нибудь уже писал Хакрусу?
Отредактировано Радик245 (18-12-2008 20:02:39)
Отсутствует
У меня такой вопрос (или пожелание - зависит от ответа). На http://www.vesti.ru/videos? после каждой видеозаписи пивная реклама. Например, здесь и нужная видеозапись, и реклама загружаются через http://www.vesti.ru/v.xml?adv=1&z=2&vid=171645
Если туда заглянуть, то становится понятно, что ролик с рекламой - http://www.vesti.ru/flv.html?vid=zzz.flv
Но заблокировать его я не могу, и в списке элементов его нет.
Отсутствует
Радик245
Судя по всему, запрос идет не через браузер, Flash скачивает напрямик. Видимо поэтому все эти видео у меня вообще не работают...
gunwitch
Надеюсь в Adblock Plus 1.0.1 реализовать ограничение фильтров на определенные домены. Побочным эффектом будет как раз та функциональность, которая вам требуется. Можно будет добавить фильтр:
Этот фильтр отключит Adblock Plus на всех сайтах кроме foo.ru, bar.ru и baz.ru. Конечно, совсем до нуля расход процессорного времени не опустится, ведь Adblock Plus будет продолжать проверять все запросы, которые делает браузер. Но на проверку будет уходить существенно меньше времени.
Отсутствует
Надеюсь в Adblock Plus 1.0.1 реализовать ограничение фильтров на определенные домены.
Хорошо! Рекламу с фотохостингов можно будет заблокировать. Ещё сталкивался с тем, что объект Shockwave Flash c одним и тем же адресом на одной странице вызывает рекламу, а на другой - видео, ради которого сайт и существует. Но там домен был один и тот же.
Отредактировано Радик245 (22-12-2008 19:56:28)
Отсутствует
Lain_13
Наличием интегрированного EasyList и EasyElements?
Нет, в оригинальном списке их нет, но
MORPEH пишетМоя подписка, не основная, а только дополнение к EasyList (by rick752)
Интересно, с какой стати его подписка оказалась "первой российской" (см. его подпись)? Впрочем, дополнительно к RU Adlist пойдёт - может, что-то ещё заблокирует.
Глядя на некоторые правила, возникает ощущение....Михалкин просто не заметил ....
А-а, пока писал, догадался: Михалкин старается избегать сворачивания по ссылке, потому эти правила и не скопированы. Что-ж, наверное, нужна такая очень осторожная, хотя, на мой беглый взгляд, и слабоватая подписка.
На счет моей подписки:
1. Подписка была еще сделана для AdBlock.
2. Я не отрицаю, что некоторые правила взял у вас! Ибо я сам не хочу что бы я видел рекламу, и не видел мой младший брат какую-нибудь порно-рекламу(извините, если что). Поэтому у него стоит подписка черного списка от DemonSat'a
3. Список стараюсь обновлять регулярно, но времени парой не бывает. Поглядываю на ваши комментарии. Выбираю.
4. На счет лишнего я заметил. Подписку почищу на выходных.
5. Правила скрытия сам не составлял, взял с этого форума. Не стал раздумывать о лучшем.
С уважением,
Михалкин Александр
Отредактировано MORPEH (23-12-2008 17:57:58)
удалено
Отсутствует