Я написал некоторый код, который вызывает метод 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()
. В результате у меня всегда была низкая скорость загрузки.
Отключение «Автоматическое определение настроек» на «Панель управления» / «Свойства обозревателя» -> вкладка «Подключение» -> Настройки локальной сети также не увеличивало скорость загрузки.