Я не только по нему смотрю. Парадокс в том, что запуская в экземпляра каждый выдает около 3500 функций, включающих скачивания хтмл в секунду, из чего я сделал вывод что сервер справляется прекрасно, просто один экземпляр программы чего то не хочет работать в полную мощь (которую выдают 3 одновременно запущенных экземпляра).
А, и ещё: функция скачки хтмл кода в 99% случаев возвращает одну из ошибок (если возвратился код, а не огшибка, то мы добились результата). Соответственно, GetHTML находится в блоке try catch. Может можно как то игнорировать исключения при скачивании хтмл и в случае ошибки просто ничего не возвращать? Я слышал, try catch есть много ресурсов.
Тестировал с разным количеством потоков. При 10 и 150 результаты примерно одинаковые и по нагрузке сети и по CPU. Вы правы, в основном время ест выкачка html кода (без него скорость обработки- 20 млн функций\сек, с ним- ~3500 функций\сек). Однако, сеть почти не нагружается. А вот если запустить кучу экземпляров то можно подгрузить сеть до 10-20%.
Я так понял, нужно добиться результата, когда программе выдается приоритет на работу с сетью и доступ ко всей ширине канала.
Грузит ещё интернет (но там работа с апи, от силы 2% ширины канала ест) и файловую систему (10-20%). Поднять приоритет чего? У меня у всех потоков ThreadPriority.Highest;