回答
您可以使用WMI来检索缓存信息。
你首先需要一个参考System.Management.dll
添加到您的项目,那么你可以使用下面的代码:该Win32_CacheMemory
WMI类的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
namespace Scratch
{
public enum CacheLevel : ushort
{
Level1 = 3,
Level2 = 4,
Level3 = 5,
}
public static class CPUInfo
{
public static List<uint> GetCacheSizes(CacheLevel level)
{
ManagementClass mc = new ManagementClass("Win32_CacheMemory");
ManagementObjectCollection moc = mc.GetInstances();
List<uint> cacheSizes = new List<uint>(moc.Count);
cacheSizes.AddRange(moc
.Cast<ManagementObject>()
.Where(p => (ushort)(p.Properties["Level"].Value) == (ushort)level)
.Select(p => (uint)(p.Properties["MaxCacheSize"].Value)));
return cacheSizes;
}
}
}
全部详细信息,请访问:
http://msdn.microsoft.com/en-us/library/aa394080(v=vs.85).aspx
谢谢你的回答。我会浏览WMI。 – GKalnytskyi
@GKalnytskyi希望它有帮助。上面的代码给出了有关* all *缓存级别的信息,其中包括级别1,而其他'Win32_Processor'回答没有。 –
谢谢你回答这个怪胎问题,而不是在谷歌的第一个命中,那里的答案是“你为什么需要这个?”。这实际上是这个网站上最令人讨厌的tic。 – hoodaticus
是this你在找什么? Win32_Processor类具有L2CacheSize和L3CacheSize成员。
+1不一定需要管理(WMI),但可以使用。 – 2011-08-09 12:00:19
Bummer,他想知道1级缓存。 –
谢谢你的回答,我会更详细地看看WMI。我只是认为有一个我无法找到的纯粹的托管解决方案。 – GKalnytskyi
试试这个代码
using System.Management;
uint32 cachsize;
public void CPUSpeed()
{
using(ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'"))
{
cachsize = (uint)(Mo["L2CacheSize"]);
}
}
我把它从Here
谢谢!我会浏览WMI – GKalnytskyi
- 1. .net缓存大小
- 2. 确定缓存的总大小
- 3. 如何确定缓冲区大小
- 4. 如何确定ASP.net缓存项目的大小?
- 5. 如何确定正确的缓冲区大小SQLBindCol
- 6. 确定IWICStream缓冲区中已用内存的大小
- 7. 如何以编程方式获取C++中的CPU缓存页面大小?
- 8. 为C#.net代码分析CPU缓存?
- 9. 如何在.NET中计算/确定文件夹大小?
- 10. 如何获得CPU的分支目标缓冲区(BTB)大小?
- 11. 英特尔Sandy Bridge CPU中TLB的大小是如何确定的?
- 12. 如何确定分配的C缓冲区的大小?
- 13. 如何确定缓冲区大小的BufferedOutputStream的write方法
- 14. cpu缓存如何处理大内存对象?
- 15. GridPanel如何确定大小?
- 16. 确定处理器的缓存扇区大小
- 17. HTML5缓存大小?
- 18. 如何确定MySQL批量的缓冲区大小INSERT
- 19. 如何在Linux下确定vswprintf的缓冲区大小gcc
- 20. Autohotkey:如何确定剪贴板缓冲区内容的大小
- 21. 如何在使用Hibernate时确定最佳的预备语句缓存大小
- 22. iOS中缓存的NSURLRequest内存大小
- 23. .NET内存大小
- 24. ASP.NET缓存最大大小
- 25. 最大缓存大小
- 26. 如何增加berkeley db缓存大小
- 27. 如何高效地确定内存中的java对象大小?
- 28. 如何确定内存中的COM对象大小?
- 29. 什么是缓存大小和缓存行大小?
- 30. 如何在Python中确定'word'大小
我不认为你可以以管理的方式做到这一点。将不得不使用WMI。 – 2011-08-09 12:00:44
...虽然WMI有托管API吗? –
@Kieren:是的,通过COM Interop。我不确定当他说“管理”时,这是OP的意思。 – 2011-08-09 12:09:10