Control de prioridad de ejecución de núcleos.

Iniciado por Programar_Java, 12 Noviembre 2018, 12:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Programar_Java

Hola a todos buenos días, he estado trabajando unas semanas con un programa de Java que resuelve cálculos matemáticos  y todo funciona perfectamente. Pero me pica la curiosidad de saber si se puede hacer que el programa solo se ejecute sobre un núcleo completamente. Se que desde el Administrador de tareas se puede seleccionar un programa y hacer que trabaje sobre un Núcleo pero me gustaría  saber si se puede hacer esta acción directamente desde java programando lo. Resumen solo quiero que este programa use un núcleo para realizar calculosos y dejar los demás en reposo. Hay forma de hacer esto directamente desde JAVA ?  ;-)

sapito169

#1
la "mejor forma y mas facil" de hacerlo es con stream

este es un ejemplo de como
creo un stream de los numeros del uno al 6 (1)
luego le ordeno que los calculos sean en paralelo (2)
luego lo multiplico cada elemento por 2 (3)
luego filtro los que son mayores a 3 (4)
luego le saco el minimo de todos (5)
y en caso de que haya error muera muera tragica y pateticamente sin darle auxilio

Código (java) [Seleccionar]


int min = Stream.of(1, 2, 4, 5, 6).   //1
               parallel().                      //2
               mapToInt((x) -> x * 2). //3
               filter((x) -> x > 3).        //4
               min().                           //5
               orElseThrow(NoSuchElementException::new);//6
       System.out.println(min);




recuerda que lo mas probable cuando uses streams malogre el rendimiento (es solo para gente grande con pelos en el pecho y lomo plateado)

los stream mejorar el rendimiento solo cuando son calculos de muy alto costo computacional para casos chicos incluso puede empeorar la unica forma de tener un grado de seguridad es con experimentos realistas o un analisis estadisco de datos historicos de forma muy rigurosa

leea para tener fundamento teorico
1 experimentcion k a la n
2 universal escalability law
3 historgrama
4 percentiles
5 usa el "#$%$ excel

rub'n

#2
Cita de: sapito169 en 13 Noviembre 2018, 18:25 PM
la "mejor forma y mas facil" de hacerlo es con stream

este es un ejemplo de como
creo un stream de los numeros del uno al 6 (1)
luego le ordeno que los calculos sean en paralelo (2)
luego lo multiplico cada elemento por 2 (3)
luego filtro los que son mayores a 3 (4)
luego le saco el minimo de todos (5)
y en caso de que haya error muera muera tragica y pateticamente sin darle auxilio

Código (java) [Seleccionar]


int min = Stream.of(1, 2, 4, 5, 6).   //1
               parallel().                      //2
               mapToInt((x) -> x * 2). //3
               filter((x) -> x > 3).        //4
               min().                           //5
               orElseThrow(NoSuchElementException::new);//6
       System.out.println(min);




recuerda que lo mas probable cuando uses streams malogre el rendimiento (es solo para gente grande con pelos en el pecho y lomo plateado)

los stream mejorar el rendimiento solo cuando son calculos de muy alto costo computacional para casos chicos incluso puede empeorar la unica forma de tener un grado de seguridad es con experimentos realistas o un analisis estadisco de datos historicos de forma muy rigurosa

leea para tener fundamento teorico
1 experimentcion k a la n
2 universal escalability law
3 historgrama
4 percentiles
5 usa el "#$%$ excel


Mmmm...

pero no se, el parallel stream si mas bien usa mas cores en paralelo  :-\  dividiendo el trabajo en trozos o chunks

y este usuario no quiere mas bien usar uno?

no entiendo  :xD





Desde el propio so creo que también esta la posibilidad de configurar para usar un nucleo max para una app si no me equivoco, que seria lo mismo hacer un bash o hasta modificar el registro de windows por ejemplo hasta con el mismo java


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

sapito169

#3
waaa no lei bien

le quitas el parrallel(linea 3) y ya  se ejecuta en un solo nucleo
o programas normal con bucles y sin usar hilos y ya no habría forma de usar varios nucleos