Estoy tratando de implementar un rastreador web limitado en C# (para unos pocos cientos de sitios solamente) usando HttpWebResponse.GetResponse() y Streamreader.ReadToEnd(), también intenté usar StreamReader.Read() y un bucle para construir mi cadena HTML.HTTPWebResponse + StreamReader Muy lento
Solo estoy descargando páginas de 5-10K.
¡Todo es muy lento! Por ejemplo, el tiempo promedio de GetResponse() es de aproximadamente medio segundo, mientras que el tiempo promedio de StreamReader.ReadToEnd() es de aproximadamente 5 segundos.
Todos los sitios deben ser muy rápidos, ya que están muy cerca de mi ubicación, y tienen servidores rápidos. (en Explorer no lleva prácticamente nada a D/L) y no estoy usando ningún proxy.
My Crawler tiene aproximadamente 20 hilos que leen simultáneamente desde el mismo sitio. ¿Esto podría estar causando un problema?
¿Cómo reduzco StreamReader.ReadToEnd veces DRÁSTICAMENTE?
intentado usar cliente Web, mismos resultados (tiempos medios no han cambiado). Debo mencionar también que tengo una conexión de 1.5MBPS con una velocidad d/l promedio de 180KBPS Estaba pensando que tal vez 20 hilos que llamen a StreamReader.Read al mismo tiempo podrían tener algo que ver con eso? ¿O es esto irrelevante? – Roey
En mi experiencia, en una conexión como esa saturarás el ancho de banda con 3-4 hilos. No es necesario ejecutar más a menos que los sitios web que está haciendo ping sean muy lentos y tenga hilos durmiendo mucho, esperando E/S. – kgriffs
¡guau! Estaba usando async HttpWebRequest para cargar el servidor de prueba con aproximadamente 300 subprocesos por cliente y cada subproceso se estaba descargando "en serie". El cambio de la configuración de conexión máxima hizo que cada hilo descargara datos 10 veces más rápido. –