Estoy haciendo un webcrawler y usando hilos para descargar páginas.¿Hay alguna forma de determinar la cantidad ideal de hilos?
El primer factor que limita el rendimiento de mi programa es el ancho de banda, nunca puedo descargar más páginas que pueda obtener.
Lo segundo es lo que me ha interesado. Estoy usando subprocesos para descargar muchas páginas al mismo tiempo, pero a medida que creo más subprocesos, se produce más intercambio de procesador. ¿Hay alguna métrica/camino/clase de pruebas para determinar cuál es el número ideal de hilos o si después de cierto número, el rendimiento no cambia o disminuye?
Si su aplicación estaba unida a la CPU, entonces el número es bastante similar al número de CPU que tiene en su máquina. Sin embargo, los programas vinculados a E/S (como los rastreadores web) terminan bloqueando mucho las E/S, por lo que es posible que pueda tener más. Por lo tanto, tengo que estar de acuerdo con el comentario de @ pst: ejecutar pruebas, luego descubrir el número ideal para su entorno. No hay una forma realmente buena de detectar esto en el código. (Sin embargo, PUEDE escribir el código de autoajuste una vez que sepa cómo verificar su ancho de banda "promedio actual") –