Estoy usando el paquete de agilidad html para analizar páginas individuales de un sitio web del foro. Entonces, el método de análisis devuelve todos los enlaces tema/hilo en el enlace de la página, pasado como un argumento. Recojo todos estos enlaces de tema de todas las páginas analizadas en una sola colección.¿Cómo se puede paralelizar mejor el análisis sintáctico de páginas web?
Después de eso, verifico si están en mi Dictionary
de las URL ya vistas, y si no lo están, entonces las agrego a una nueva lista y la UI muestra esta lista, que básicamente es temas nuevos/hilos creados desde la última vez.
Dado que todas estas operaciones parecen independientes, ¿cuál sería la mejor manera de paralelizar esto?
¿Debo usar .NET 4.0's Parallel.For/ForEach
?
De cualquier manera, ¿cómo puedo reunir los resultados de cada página en una sola colección? ¿O esto no es necesario?
¿Puedo leer desde mi Dictionary
centralizado cada vez que un método de análisis finaliza para ver si están allí, al mismo tiempo?
Si ejecuto este programa para 4000 páginas, lleva como 90 minutos, sería genial si pudiera usar todos mis 8 núcleos para terminar la misma tarea en ~ 10 minutos.
Gracias, el diseño de Mercator puede ser un poco complejo de implementar, pero voy a recopilar todos los enlaces extraídos en un 'ConcurrentDictionary', y luego de hacerlo, juntar los nuevos enlaces al compararlos con mi colección centralizada, que también quiero para hacer un 'ConcurrentDictionary', entonces también puedo hacer este paso en paralelo. Eso es lo mejor que pude pensar. –