微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在.NET中确定CPUcaching大小?

我想知道是否有办法确定托pipe代码中的cpucaching大小?

我正在写一个Strassen的C#matrix乘法algorithm,并且想知道我可以将多less个matrix元素放入caching中以提高计算速度。

有没有从命令行确定.NET Framework版本的方法

在sles中运行.NET 11

什么是.NET文件夹search层次结构?

在没有安装Excel的情况下以编程方式填充Excel模板

如何解决停止的Windows服务'clr.dll错误

您可以使用WMI来检索缓存信息。

您首先需要将对System.Management.dll的引用添加到您的项目中,然后您可以使用以下代码

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; } } }

有关Win32_CacheMemory WMI类的详细信息,请访问:

http://msdn.microsoft.com/en-us/library/aa394080(v=vs.85).aspx

这是你在找什么? Win32_Processor类具有L2CacheSize和L3CacheSize成员。

试试这个代码

using System.Management; uint32 cachsize; public void cpuSpeed() { using(ManagementObject Mo = new ManagementObject("Win32_Processor.deviceid='cpu0'")) { cachsize = (uint)(Mo["L2CacheSize"]); } }

我从这里得到它

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐