Тарифы Услуги Сим-карты

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


Что мы ждём от профайлера? Нам нужна абсолютная (время) и относительная (проценты) статистика выполнения отдельных участков кода (если возможно, с точностью до строки). После оптимизации каких-то критичных участков кода нужно запустить профайлинг ещё раз и сравнить результаты.

Так как по роду деятельности я связан с разработкой под web, то в качестве подопытного будет выступать ASP.NET приложение (скачать):

  • public partial class Default: System.Web.UI.Page
  • protected void Page_Load(object sender, EventArgs e)
  • SampleBadMethod1();
  • SampleBadMethod2();
  • private void SampleBadMethod1()
  • for (int i = 0; i < 100; i++)
  • SampleBadSubMethod1();
  • private void SampleBadSubMethod1()
  • Thread.Sleep(10);
  • private void SampleBadMethod2()
  • for (int i = 0; i < 10000; i++)
  • SampleBadSubMethod2();
  • private void SampleBadSubMethod2()
  • Thread.Sleep(1);
  • * This source code was highlighted with Source Code Highlighter .
    Небольшое лирическое отступление. Сначала хотел выбрать реальное приложение для профайлинга. Выбор пал на Tailspin Spyworks , которое используется в качестве steb-by-step руководства. Казалось бы, руководство для новичков должно быть так отполировано, чтобы сразу заинтересовать разработчика, научить каким-то правильным вещам. И что я там увидел? Кривоватую вёрстку, смесь бизнес-логики и разметки, неоптимальные запросы к БД, select * даже если тянутся 1-2 поля… Выполнять все оптимизации 4 раза (для 4-х профайлеров) оказалось очень трудоёмко, поэтому за 3 минуты было написано используемое в тестах приложение. Если кому-то интересно, в будущих статьях можно будет разобрать по косточкам Tailspin Spyworks.

    Довольно лирики, запускаем профайлеры.

    Visual Studio Perfomance Profiler Запуск производится из VS через меню Analyze -> Launch Perfomance Wizard.
    С помощью нескольких простых шагов выбираем тип профайлинга (я выбрал Instrumentation, т.к. в CPU sampling не показывается время выполнения, только в процентах), исследуемые проекты и нужно ли профилировать запросы к БД через ADO.NET.
    После нажатия кнопки Finish запускается браузер, при этом в студии будет висеть заставка с кнопками Pause и Stop.

    После окончания загрузки страницы в браузере, нажимаем Stop и получаем результат:

    Вот как выглядит экран статистики по методам:

    Теперь нужно оптимизировать критичные участки кода SampleBadMethod1 и SampleBadMethod2. В качестве «оптимизации» сокращаем количество итераций в цикле (например, со 100 до 50 и c 10000 до 1000).
    Получаем ещё раз результат и через пункт меню Analyze->Compare Perfomance Reports сравниваем результат:

    Ну что же, мы молодцы, получилось ускорить наше приложение.

    Повторим те же действия с другими профайлерами.

    ANTS Profiler При создании новой сессии профайлинга появляется следующее окно:

    Здесь можно выбрать тип приложения, опции профайлинга и ввести данные приложения, например, для ASP.NET application на dev-сервере это путь до приложения, версия.net, номер порта и т.п.
    После нажатия кнопки Start Profiling запускается браузер, в ANTS Profiler в это время рисуется график загрузки процессора по оси времени.
    Нажимаем кнопку Stop Profiling и получаем результат:

    Подробно рассматривать назначение и функции областей экрана сейчас не буду (это тема отдельной статьи), кратко скажу, что в верхней части видно временную шкалу с загрузкой ЦП (или любым другим показателем, который вы можете выбрать сами), в центре дерево методов со статистикой выполнения по времени и количеству вызовов, в нижней части просмотр исходного кода методов (если код доступен).
    Здесь есть некоторая странность: мы видим, что суммарное время выполнения метода SampleBadSubMethod2 равно 14 мс, хотя внутри него задержка на 1 мс и он вызывается 10000 раз. Возможно, ANTS как-то некорректно обрабатывает метод Thread.Sleep.

    Теперь снова «оптимизируем» приложение, запускаем профайлер, получаем результат и… не можем сравнить средствами ANTS… В FAQ на сайте предлагают запустить ещё один профайлер и переключаться между ними, сравнивая результат. Ну, спасибо, что ещё сказать:)

    В бой вступает

    dotTrace При выборе File->Profile появляется окно:

    Выбираем тип приложения, задаём настройки и Run!
    После запуска профайлинга появляется небольшое окно, с помощью которого можно получить результат (Get Snapshot) или завершить профайлинг.

    После получения результата увидим следующее окно:

    Здесь видим дерево методов с процентами и временем выполнения. В правой части можно посмотреть исходник того или иного метода.
    Оптимизируем приложение, получаем результат и сравниваем с первоначальным:

    Ну что ж, оптимизация удалась.

    И напоследок

    EQATEC Profiler Запускаем профайлер, видим окно:

    Здесь нужно выбрать путь до папки bin приложения, выбрать сборки, которые хотим исследовать на нажать Build.

    Затем запускаем свой любимый браузер и загружаем страницу приложения. Если всё нормально, то в логе появится надпись Profiled appication xxx started и станут активными кнопки «Take snapshot» и «Reset counters»

    А вот и наш snapshot:

    Видим статистику вызовов, а также представление методов в виде блоков (в нижней части). Эти блоки кликабельны, т.е. можно переходить по иерархии вызовов вниз/вверх.
    Теперь в очередной раз оптимизируем приложение и сравниваем результат:

    Мы опять молодцы, ускорили приложение во много раз.

    На этом всё, посмотрим на сводную таблицу возможностей представленных профайлеров

    Summary VS Profiler ANTS dotTrace EQATEC
    Показ относительных результатов выполнения методов (в %)
    Показ абсолютных результатов выполнения методов (в секундах, мс и т.п.)
    Показ числа вызовов методов
    Просмотр исходников методов
    Сравнение результатов двух замеров
    Цена > 5000$ 1) от 395$ 2) от 199$ 3) бесплатно 4)

    1) в составе VS Premium и выше
    2) зависит от редакции
    3) для open source проектов бесплатен
    4) ограничение на 10 одновременно загружаемых dll, за $ с меньшими ограничениями

    Теперь рассмотрим замеченные мной достоинства и недостатки каждого профайлера в отдельности, не указанные в сравнительной таблице.

    VS Profiler встроен в VS (правда, в premium и ultimate)
    взаимодействие с ADO.NET
    капризный, иногда профайлинг не запускается без объяснения причин
    секция appSettings должна быть в web.config, а не вынесена в отдельный файл, т.к. туда пишутся какие-то служебные настройки, а разработчики видимо не предусмотрели расположение данной секции во внешнем файле
    на большом проекте и не очень мощной машине заметно подтормаживаетANTS Profiler самая подробная информация по вызовам методов, куча счетчиков производительности
    в режиме профайла SQL думает, что кроме./SQLEXPRESS серверов больше не существует:)
    нет сравнения двух результатов замеровdotTrace больше всех понравилась документация
    в режиме просмотра дерева какая-то каша из цифр, названий методов, сборок
    не запустился в режиме IIS Application, хотя всё делал по хорошей документации.EQATEC маленький и быстрый, подходит, если не нужно смотреть производительность построчно и не нужны исходники
    данный минус - следствие плюса: меньше, чем у других конкурентов, возможностей.

    Итак, сделаю, возможно, субъективный вывод. Мой выбор - EQATEC Profiler, для многих задач оценки производительности его более чем достаточно. Если у вас есть возможность использования VS Premium или Ultimate, встроенный профайлер достаточно неплохой продукт. В этом случае необходимость в покупке других профайлеров отпадёт. Из оставшихся двух профайлеров своей мощью поражает ANTS профайлер, хотя, конечно, почему нет сравнения результатов - непонятно. У dotTrace обилие вариантов приобретения с большим количеством возможностей самого профайлера.

    Спасибо, что дочитали этот обзор! Надеюсь, он поможет вам сделать выбор.

    P.S. Предложения по подробному обзору каждого профайлера принимаются.

    Хитрый способ сбора качественной пробиваемой базы для XRUMER

    Всем привет! Ни для кого не секрет, что каким бы замечательным не был софт для массовой регистрации/рассылки, без надлежащего качества баз он почти не имеет ценности. Базы можно добыть различными способами – спарсить самому /купить /найти в паблике/etc. Каждый вариант хорош по – своему и у каждого из них есть свои плюсы и минусы.

    Паблик базы. Основной плюс это бесплатность. Часто в паблик сливаются и покупные базы, так что найти стоящие все-таки можно, другое дело что по этим базам будет работать сразу большое количество вебмастеров(как с лиц, так и с ломаным хрумом) и они быстро превратятся в помойку, а как известно, 1 трастовая ссылка зачастую лучше чем 1000 с гавносайтов.
    Покупка базы. В основном это лотерея. Селлеров сейчас достаточное количество, но еще больше барыг, которые покупают и перепродают базы, выдавая за свои свежеспарсенные.Данный метод получения базы хорош в том случае если вы дорожите своим временем и покупаете базу у проверенного временем человека.
    Самостоятельный парсинг. Самый лучший, но в тоже время затратный вариант. Для успешного парсинга нужно обладать словарем по тематике, признаками для парсинга + свежими прокси/соксами, если вы соберетесь парсить google, к примеру. Разумеется нужен и сам парсер, для хрумоводом все проще, так как с хрумером идет Hrefer, но все же я рекомендовал еще купить что-нибудь дополнительно. Лично я использую webparser, хотя многие хвалят a-parser, в общем кто на что горазд и у кого какие потребности.

    База собранная собственноручно дает небольшое временное преимущество над другими вебмастерами, но не стоит думать, что собрав скажем базу форумов по хорошим признакам вы не обнаружите на доброй половине из них спам от «собратьев по оружию», но в любом случае свежеспаршенные (сырые) базы будут лучше паблик и зачастую лучше покупных, но как говорится этот вариант для тех у кого хорошие аппаратные мощности + есть время.

    Есть конечно же еще варианты – утащить с чужого сервера, пропарсить интернет по примерно такому запросу

    Пример лота в телдери:
    _http://www.telderi.ru/ru/viewsite/67448
    Как видим: “также прогонялся по профилям, прогон по профилям и каталогам был осуществлен 30 дней назад”, значит это “наш клиент”. Копируем урл сайта к себе в текстовый файл.

    Таким нехитрым способом мы собираем БАЗУ сайтов, которые когда-либо прогонялись хрумером или ручками по трастовым сайтам. Отмечу тот факт, что большинство прогонщиков работают с дефолтным хрумером без измененного файла xas_AI.txt, что опять же нам на руку.

    Буквально за час, можно собрать около 200 урлов сайтов, которые были «запачканы» прямым прогоном хрумером. Далее мы идем пополнять коллекцию на SEO форумы, там мы ищем темы с прогонами и смотрим на отзывы, форумов полно, для примера :
    _http://www.maultalk.com/forum38.html
    Далее идем по популярным веткам прогонщиков и смотрим в темах тех, кто оставлял отзывы об услуге. В 85% случаев, если у них заполнено поле сайт в профиле и подпись, то там находится их сайт, по которому они заказывали прогон, причем зачастую не один.

    Работа по сбору таких урлов немного нудная, но зато эффект будет достойным(пока поверьте на слово).
    После 2-3 часов работы, которую можно сбагрить на аутсорс толковому школьнику за 100-150 рублей с , мы получаем приличный список сайтов, теперь дело за малым – вытащить обратные ссылки.
    Для начала идем в _ http://ahrefs.com и (можно воспользоватся другим софтом/сервисами) и извлекаем ВСЕ обратные ссылки .

    Данную нудную работу тоже лучше поручить кому-то.
    Вторым этапом будет подготовка урлов для парсинга, и тут опять следует небольшая хитрость.
    Нужно составить запросы для ПАРСИНГА примерно такого вида, приведу пример для сайт
    «Просмотр профиля» http://сайт/
    «Профиль» http://сайт/
    «Профиль пользователя» http://сайт/
    «Пользователь» http://сайт/
    «Сайт» http://сайт/
    «Домашняя страница» http://сайт/

    «user» http://сайт/

    «member» http://сайт/

    «profile» http://сайт/

    Просто ввести название домена в кавычках «http://сайт»
    Просто погуляйте по форумам и посмотрите как выглядят там профили.
    Сделать список таких признаков и урлов вам поможет EXCEL и оператор &
    В одной колонке у вас урлы, в другой наши простенькие “признаки”:

    Наглядный пример:
    >>>>