2014-02-10 16 views
1

是否有可能在java(或C#)中創建一個可以檢查用戶CPU功率有多大的程序?如果是這樣,哪些類/ API可用於查找?我似乎無法通過Google搜索找到任何東西。確定用戶CPU大小的java程序?

+0

的可能重複[我怎樣才能編程方式確定我的處理器類型?(http://stackoverflow.com/questions/1020581/how-can- i-programmatically-determine-my-processor-type) – SamYonnou

+0

'println(「Over 9000」);'。什麼是「多大」? – DarkWanderer

回答

3

使用:

System.getenv("PROCESSOR_IDENTIFIER"); 
System.getenv("PROCESSOR_ARCHITECTURE"); 
System.getenv("NUMBER_OF_PROCESSORS"); 

注:System.getenv返回OS依賴性映射和可能潛在地返回上面如果它們不在當前OS定義中提到的密鑰無效。如果你打算開發一個工具,就像JConsole的,你應該探索Java Management

Runtime.getRuntime().availableProcessors(); 

您也可以考慮使用Runtime類信息。有一些有用的課程可以滿足你的要求。

+0

這給了很多信息,但不是速度(也許對於一些處理器,但不是我的)。還有更多嗎? – Keppil

+0

@Keppil試試這個更長的列表http://www.jpsoftwaretech.com/vba/get-environment-variable-values/ – Rainbolt

+0

@John:是的,寫了一個小程序來檢查我的電腦。發現了更多(PROCESSOR_REVISION,PROCESSOR_LEVEL,PROCESSOR_ARCHITEW6432),但沒有速度。 – Keppil

1

對於c#;

var query = new ObjectQuery("select * from Win32_Processor"); 
var mc = new ManagementObjectSearcher(query); 

var props = mc.Get().Cast<ManagementObject>() 
       .SelectMany(m => m.Properties.Cast<PropertyData>()) 
       .ToDictionary(p => p.Name, p => p.Value); 

foreach (var prop in props.Where(kv => kv.Value != null)) 
{ 
    Console.WriteLine("{0} = {1}", prop.Key, prop.Value); 
} 

這將打印像這樣

AddressWidth = 64 
Architecture = 9 
Availability = 3 
Caption = Intel64 Family 6 Model 58 Stepping 9 
CpuStatus = 1 
CreationClassName = Win32_Processor 
CurrentClockSpeed = 3201 
CurrentVoltage = 41 
DataWidth = 64 
Description = Intel64 Family 6 Model 58 Stepping 9 
DeviceID = CPU0 
ExtClock = 100 
Family = 205 
L2CacheSize = 1024 
L3CacheSize = 6144 
L3CacheSpeed = 0 
Level = 6 
LoadPercentage = 1 
Manufacturer = GenuineIntel 
MaxClockSpeed = 3201 
Name = Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 
NumberOfCores = 4 
NumberOfLogicalProcessors = 4 
PowerManagementSupported = False 
ProcessorType = 3 
Role = CPU 
SocketDesignation = CPU 1 
SystemCreationClassName = Win32_ComputerSystem