C# 内存带宽使用率

C# 内存带宽使用率,c#,c++,c,hardware,performancecounter,C#,C++,C,Hardware,Performancecounter,如何计算所使用的内存(RAM)带宽?需要哪些性能计数器 我遇到了一个能够做到这一点的工具,“Rightmark多线程内存测试”。但与Rightmark的其他测试不同,我没有找到它的源代码,只有二进制文件,很难“计算”内存带宽使用情况。有许多非平凡的缓存和MMU问题需要解决。唯一真正做到这一点的方法是通过使用模拟或真实世界的测量 您可以通过调试代码并计算执行的内存加载和存储操作的数量来获得“粗略”的想法。但是,知道它是否是缓存命中/未命中是另一个问题 这取决于你的目的。如果要获得猜测,可以使用经验

如何计算所使用的内存(RAM)带宽?需要哪些性能计数器


我遇到了一个能够做到这一点的工具,“Rightmark多线程内存测试”。但与Rightmark的其他测试不同,我没有找到它的源代码,只有二进制文件,很难“计算”内存带宽使用情况。有许多非平凡的缓存和MMU问题需要解决。唯一真正做到这一点的方法是通过使用模拟或真实世界的测量

您可以通过调试代码并计算执行的内存加载和存储操作的数量来获得“粗略”的想法。但是,知道它是否是缓存命中/未命中是另一个问题

这取决于你的目的。如果要获得猜测,可以使用经验法则,即大约30%的通用代码是内存加载和存储。如果你想得到一个最坏的情况,你可以假设缓存总是漏掉,然后解决它


你可以做的一件潜在的事情是研究虚拟化。有几个开源选项(我想到了QEMU)。可以从中导出某些硬件测量值。

如果您的代码可以在Linux上运行,请使用:

Cachegrind是一个缓存探查器。信息技术 对该对象执行详细的模拟 CPU中的I1、D1和L2缓存,以及 因此,我们可以准确地查明来源 代码中的缓存未命中数。信息技术 标识缓存未命中的数量, 内存引用和指令 为每行源代码执行, 具有每个功能、每个模块和 整个项目总结。这是有用的 使用任何语言编写的程序。 Cachegrind运行有关的程序 比正常速度慢20-100倍

你可能想使用.< /p>为什么把这个标记为C++,C++和C?