Низкая скорость загрузки без прокси - PullRequest
2 голосов
/ 04 января 2012

Я написал некоторый код, который вызывает метод webClient.DownloadString . Когда я запустил свой профилировщик программы, покажите, что этот метод занимает в программе 98% времени (не процессора), а скорость загрузки слишком низкая (около 10% от максимальной скорости загрузки).

Когда я запускаю свою программу с Fiddler скорость загрузки увеличивается до 75% - 90% от максимальной скорости загрузки.

Где моя ошибка? И как я могу увеличить скорость загрузки моего приложения?

Вот мой код.

        WebClient wc = new WebClient();
        wc.Encoding = Encoding.GetEncoding("1251");
        wc.Proxy = null;
        HtmlDocument html = new HtmlDocument();
        html.LoadHtml(wc.DownloadString("http://some-site.com/" + htmlUrl));
        var c1 = html.GetElementbyId("content");
        foreach (var c2 in c1.ChildNodes.Where(c => c.Name == "div"))
        {
            foreach (var c3 in c2.ChildNodes.Where(c => c.Name == "a"))
            {
                var leftIndex = c3.InnerText.IndexOf('(');
                var rightIndex = c3.InnerText.LastIndexOf(')');
                var id = c3.InnerText.Substring(0, leftIndex - 1).Replace(" ", "");
                var name = c3.InnerText.Substring(leftIndex + 1, rightIndex - leftIndex - 1);

                SaveInDB(int.Parse(id), name);
            }
        }

Я запустил его в несколько потоков, чтобы увеличить скорость загрузки.

И я пытался использовать другие варианты wc.Proxy = null или wc.Proxy = GlobalProxySelection.GetEmptyWebProxy() или WebProxy.GetDefaultProxy() или wc.Proxy = new WebProxy(). В результате у меня всегда была низкая скорость загрузки.

Отключение «Автоматическое определение настроек» на «Панель управления» / «Свойства обозревателя» -> вкладка «Подключение» -> Настройки локальной сети также не увеличивало скорость загрузки.

1 Ответ

0 голосов
/ 19 января 2012
IWebProxy proxy = GlobalProxySelection.GetEmptyWebProxy();
wc.Proxy = proxy;
...