La pregunta parece un poco confusa.
Quiero reducir el tiempo de ejecución absoluto.
¿Se refiere a elapsed time? Ciertamente, el uso de la estructura de datos correcta mejorará el rendimiento, pero para una estructura de datos dada, el orden mínimo del algoritmo es absoluto, y nada que ver con la forma en que se implementa el algoritmo.
¿Qué patrón de diseño existe para darse cuenta ...?
patrones de diseño son algo que codifican es, no una plantilla para escribir programas, y unas herramientas útiles para el diseño curricular. Para comenzar con un patrón y hacer que su código encaje, es en sí mismo un antipatrón.
Nadie puede responder esta pregunta sin saber mucho más sobre sus datos y cómo está estructurado, sin embargo, el factor clave para la eficiencia será la estructura de datos que utilice para implementar su árbol. Si el tiempo transcurrido es importante, entonces observe la ejecución paralela, sin embargo, también puede valer la pena considerar realizar la operación en una herramienta diferente: las bases de datos están altamente optimizadas para manejar grandes conjuntos de datos, pero tenga en cuenta que el método obvio para describir un árbol una base de datos relacional es muy ineficiente cuando se trata de aislar subárboles y caminar por el árbol.
En respuesta a Adán lo que sugiere que se bifurcan de que respondió:
I "oído" que PCNTL tampoco una buena solución. Alguna experiencia?
¿Dónde oíste eso? Ciertamente, bifurcar desde un script CGI o mod_php invocado es una mala idea, pero no hay nada de malo en hacerlo desde la línea de comando. Tenga un google para procesos PHP de larga ejecución (tenga en cuenta que hay mucha información mala por ahí). El código que escriba variará según el sistema operativo subyacente, que no ha indicado.
Sospecho que podría resolver una gran parte de sus problemas de rendimiento identificando qué partes del árbol necesitan verificarse y solo revisando esas partes Y activando las comprobaciones cuando se actualiza el árbol, o al menos marcando los nodos como 'sucio'.
Usted puede encontrar estos útiles:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ http://en.wikipedia.org/wiki/Threaded_binary_tree
C.
... escribir una extensión C? – jldupont