我写了以下函数
let getTriangles maxPerimeter =
let mutable count = 0
for c in 1..maxPerimeter do
let cc = (int64 (c*c))
for b in 1..Math.Min(c-1, maxPerimeter-c-1) do
let bb = (int64 (b*b))
for a in 1..Math.Min(maxPerimeter-c-b, (int (Math.Ceiling(Math.Sqrt(float (cc+1L-bb)))))) do
let aa = (int64 (a*a))
if cc + 1L = aa + bb then
count <- count + 1
count
现在是时候调整它了。
为此,我已经dot Trace Performance
在我的应用程序上安装并运行了一个非常大的maxPerimeter
,以确保程序需要一段时间才能运行。
这就是我得到的:
正如您可能想象的那样,我真正想知道的是使用时间在 getTriangles'
函数体内是如何分布的,所以这似乎没有特别的帮助。我尝试在Build
窗格中关闭代码优化,但它似乎对我没有一点帮助。
- 难道我做错了什么?
- 我应该如何分析这个功能?
- 这是 F# 或 CLR 特定的行为吗?
我所拥有的所有性能分析经验都与 Java 相关,所以我可能对 CLR 世界有点偏离。我也涉足过 ANTS Performance,但结果是一样的。