2009-09-19 11 views
5

conCómo llegar reloj de la CPU máximo en Java

Runtime.getRuntime().availableProcessors(); 

puedo conseguir el número de CPU disponibles.

Pero, ¿cómo puedo obtener la frecuencia de su reloj?

Estaba buscando una solución de os-indipendent.

+0

Esto es específico del sistema operativo. ¿Qué SO estás ejecutando? –

+0

Probablemente solo existan soluciones específicas de plataforma (¿leer/proc/cpuinfo?). Pero, en general, ya no es fácil decir la frecuencia ... ¿te refieres a la frecuencia actual? o la frecuencia máxima? ¿y qué hay de las máquinas virtuales no limitadas que comparten un host con un máximo de 4GHz? (¿4 de estos hosts tienen 4GHz, o 1GHz cada uno? o quizás el valor inactivo actual de 80MHz) – viraptor

+0

No sé para qué desea utilizar esta información, pero tenga en cuenta que la frecuencia del reloj no corresponde a la velocidad del procesador puede hacer cálculos. Un Pentium 4 de 3 GHz, por ejemplo, es más lento que un Core 2 Duo de 2,4 GHz. – Jesper

Respuesta

6

No hay ninguna función disponible en el Java SE API que devuelva la frecuencia de la CPU.

Además, el método Runtime.availableProcessors devuelve la cantidad de procesadores disponibles para la máquina virtual Java en el momento de llamar al método, por lo que no devolverá necesariamente el número de procesadores reales en un sistema.

partir de la especificación API Java para el método Runtime.availableProcessors:

devuelve el número de procesadores disponibles a la máquina virtual de Java.

Este valor puede cambiar durante una invocación particular de la máquina virtual . Las aplicaciones que son sensibles al número de procesadores disponibles deben por lo tanto sondear ocasionalmente esta propiedad y ajustar apropiadamente el uso de recursos .

Con el fin de obtener dicha información, lo más probable, habría que hacer llamadas del sistema operativo mediante llamadas nativas a través de Java Native Interface (JNI).

+0

Gracias. Muy claro. Estaba buscando un método nativo, pero si no existe, estudiaré JNI. ;) –

+0

Esto no pretende modelar el hardware subyacente exactamente, sino dar una idea aproximada del número de subprocesos simultáneos que el hardware puede admitir. –

Cuestiones relacionadas