对 RAM 性能进行基准测试 - UWP 和 C#
Benchmarking RAM performance - UWP and C#
我正在使用通用 Windows 平台开发基准测试应用程序,评估 CPU 和 Windows 10 系统的 RAM 性能。
虽然我找到了不同的算法来对一个CPU进行基准测试,但我仍然没有找到任何可靠的算法或解决方案来评估内存的写入和读取速度。
如何在 C# 中实现这一点?
提前致谢:)
我不明白为什么这在托管代码中是不可能的。数组访问代码变成正常的 x86 内存指令。这是一个薄的抽象。特别是我不明白为什么你需要定制的 OS.
您应该能够通过对大数组执行 memcpy 来测试顺序内存速度。它们必须大于最后一级缓存大小。
您可以通过随机索引到一个大数组来测试随机访问。索引计算必须便宜、不可预测,并且必须有一个序列化内存指令的依赖链,以便 CPU 无法并行化它们。
Honestly I don't think its possible. RAM benchmarks usually run off of dedicated OS's
RAM 测试不同于 RAM 基准测试。
C# doesn't give you that kind of control over RAM
当然,新建一个大数组访问即可。此外,了解存在的间接费用。唯一的开销是范围检查。
GC 在基准测试期间没有影响。它可能由分配触发。
我正在使用通用 Windows 平台开发基准测试应用程序,评估 CPU 和 Windows 10 系统的 RAM 性能。
虽然我找到了不同的算法来对一个CPU进行基准测试,但我仍然没有找到任何可靠的算法或解决方案来评估内存的写入和读取速度。
如何在 C# 中实现这一点?
提前致谢:)
我不明白为什么这在托管代码中是不可能的。数组访问代码变成正常的 x86 内存指令。这是一个薄的抽象。特别是我不明白为什么你需要定制的 OS.
您应该能够通过对大数组执行 memcpy 来测试顺序内存速度。它们必须大于最后一级缓存大小。
您可以通过随机索引到一个大数组来测试随机访问。索引计算必须便宜、不可预测,并且必须有一个序列化内存指令的依赖链,以便 CPU 无法并行化它们。
Honestly I don't think its possible. RAM benchmarks usually run off of dedicated OS's
RAM 测试不同于 RAM 基准测试。
C# doesn't give you that kind of control over RAM
当然,新建一个大数组访问即可。此外,了解存在的间接费用。唯一的开销是范围检查。
GC 在基准测试期间没有影响。它可能由分配触发。