如何测量 F# 代码的 CPU 和内存使用情况?

Posted

技术标签:

【中文标题】如何测量 F# 代码的 CPU 和内存使用情况?【英文标题】:How to measure CPU and memory usage of F# code? 【发布时间】:2012-04-06 15:27:26 【问题描述】:

我是 F# 语言的新手,目前我正在做一个关于 F# 性能的简短研究。所以我想做的是对我的 F# 代码进行基准测试。我已经找到了 Stopwatch 类,这很明显,但至于你应该能够测试的其余部分,我没有找到明确的线索。

我想做的是在我运行 F# 代码时找出它的内存和 CPU 使用情况。这里有没有人可以就如何做到这一点给我一些建议?

【问题讨论】:

Measure time of execution in F# 的可能重复项 @Marcus - 您是否希望同时测量内存和 CPU?您还想检查哪些其他计数器? @vcsjones 他在询问内存使用情况——与执行时间不同。我不认为这是一个骗局。 如今,BenchmarkDotNet 通常是 C# F# 中基准测试的好选择(甚至可能是通常推荐的)。 【参考方案1】:

对于快速原型设计,fsi 的时序指令提供了很好的指示:

#if INTERACTIVE
#time "on"
#endif

它会打印出如下内容:

Real: 00:00:00.199, CPU: 00:00:00.120, GC gen0: 0, gen1: 0, gen2: 0 

除了执行时间之外,其他统计数据显示了分代 GC 的三个级别收集的垃圾量,这有助于了解程序中的内存使用情况。

对于严格的基准测试,您应该使用Visual Studio profiler,它提供函数调用计数、时间和内存分配测量等,甚至使用第三方内存分析器。您可以在我的回答 Good F# Performance Profiling Tool 中找到使用这些分析器的一些提示。

【讨论】:

请记住,fsi 是 32 位的,即使您使用的是 64 位操作系统。 @JohnReynolds:这不一定是真的。 F# 3.0 有一个新的 64 位 fsi,更多信息是 here。【参考方案2】:

您可能还会发现 Dave Thomas(原 Moirae Software)的这篇博文很有帮助:

https://7sharp9.github.io/2011/12/11/2011-12-11-fixing-a-hole/

通常我会确定我认为可以回答问题的博客帖子的特定部分,但整个博客帖子都是对这个问题的回答。

编辑: 由于旧链接已损坏,因此更新了链接。

【讨论】:

以上是关于如何测量 F# 代码的 CPU 和内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 分析内存和 CPU 使用情况

如何在负载测试期间测量 CPU 和内存

Python脚本分析CPU使用情况

如何测量数据结构的内存使用情况? [复制]

如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦​​特)?

使用gawk记录一段时间内,某个进程占用内存和CPU的情况