Es práctica esta idea de proyecto java? (Planificador de procesos y optimización por enjambre de partículas)

StackOverflow https://stackoverflow.com/questions/3421415

Pregunta

En un cuadro de múltiples núcleos, las decisiones de los planificadores de hilo de Java son más bien arbitraria, asigna prioridades de los hilos en función de cuándo se creó el hilo de rosca, de la que fue creada, etc.

La idea es ejecutar un proceso de ajuste utilizando pso que fijaría al azar prioridades de los hilos y luego, finalmente, llegar prioridades óptimas, donde la función de aptitud es el tiempo total de funcionamiento del programa?

Por supuesto que habría más parámetros, como las prioridades cambiarían durante la carrera para encontrar una función de prioridad óptima.

Como práctica, interesante que hace el sonido idea? y cualquier sugerencia. Sólo un poco de fondo, ive sido la programación en Java / C / C ++ para un par de años con varios proyectos, otra alternativa sería hacer un programador de subprocesos en base a esto en C, donde el programador de subprocesos por defecto es el sistema operativo.

¿Fue útil?

Solución

La mejor manera de descubrir -. Iniciar un proyecto de código abierto y ver el uso de la gente / reacción

Suena muy interesante para mí - pero personal no lo encuentro muy útiles. Tal vez simplemente no estamos en el punto en el que la programación concurrente es tan frecuente y fácil como podría ser.

Con la promoción de la programación funcional, supongo que el mundo se movería a evitar la sincronización de hilos tanto como sea posible (lo que hace la programación de subprocesos menos de un impacto en el rendimiento general)

A partir de mi experiencia personal y subjetiva, la mayoría de los problemas de rendimiento en el software puede ser resuelto mediante la mejora de un área única cuello de botella que representa el 90% de la desaceleración. Este optimizador puede ayudar a encontrar eso. No estoy seguro de lo mucho que la estrategia de programación podría mejorar el rendimiento general, sin embargo.

No se desanime, sin embargo! Estoy hablando de la nada. Suena divertido, así que ¿por qué no jugar con él de todos modos:)

Otros consejos

Su enfoque como se describe es un enfoque estático, es decir, es necesario ejecutar el programa varias veces, y luego llegar a una solución de programación, a continuación, enviar su información de programación con el programa.

El problema es que para la mayoría de los programas no triviales, su rendimiento en parte dependerá de los datos específicos que están trabajando. Incluso si usted encuentra una manera óptima de hilos de programación para un conjunto de datos, no hay absolutamente ninguna garantía de que mejorará la velocidad en otro. En la mayoría de los casos, se ejecuta lo que será una optimización largo y arduo cada vez que quieren hacer un nuevo lanzamiento no valdrá la pena para los desarrolladores, a menos que tal vez por los grandes esfuerzos de cálculo (donde los programas son susceptibles de ser sintonizados manualmente y no está escrito en java de todos modos).

Yo diría que un planificador de procesos de autoaprendizaje es una buena idea, pero no se puede tratar como un problema de optimización clásica aquí. O se necesita estar seguro de que su orden de programación se mantiene en estado óptimo (poco probable) o encontrar un método de optimización que las obras en tiempo de ejecución. Y el problema aquí puede ser que no se necesita mucho para la sobrecarga de su programador para destruir cualquier ganancia en el rendimiento que podría obtener.

creo que esto es una pregunta un tanto subjetiva, pero en general no, no creo que funcionaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top