0

在我的模拟中,每个刻度时钟值都应该增加一,在解决了我的其他一些性能问题后,我注意到这个函数位于按包含时间列表排序的顶部(值是960205 ms):

通话 包括 T(ms) 不包括 T(ms) 不包括/通话

40001 960205.451 3586.591 0.090

to increment-clock  
         set clock (clock + 1)
                   if clock = 48
                         [ set clock 0 ]
    end

根据http://ccl.northwestern.edu/netlogo/5.0/docs/profiler.html 包含时间是从进入程序到完成的时间

我认为这应该是直截了当和容易的,

我在这里做错了什么?

我记得我以前用滴答声来增加时钟,我不记得为什么我把它改成我上面提到的那个,但这不应该花这么多时间!(该分析器包含的时间值为 599841.851 毫秒,这表明以下比上述更快:

to increment-clock  
         set clock (clock + 1)
                   if ticks mod 48 = 0 [set clock 0]
end

通话 包括 T(ms) 不包括 T(ms) 不包括/通话

40001 599841.851 2943.394 0.074

谢谢。马齐

4

1 回答 1

1

这必须是分析器扩展中的一个错误。至少,我想不出另一种解释。(嗯,你profiler:reset在跑步之间打电话吗......?)

我刚才试过这个:

extensions [profiler]

globals [clock]

to increment-clock  
         set clock (clock + 1)
                   if clock = 48
                         [ set clock 0 ]
    end

to test
  profiler:reset
  profiler:start
  repeat 1000000 [ increment-clock ]
  profiler:stop
  print profiler:report
end

我得到:

observer> test
BEGIN PROFILING DUMP
Sorted by Exclusive Time
Name                               Calls Incl T(ms) Excl T(ms) Excl/calls
INCREMENT-CLOCK                  1000000   1176.245   1176.245      0.001

Sorted by Inclusive Time
INCREMENT-CLOCK                  1000000   1176.245   1176.245      0.001

Sorted by Number of Calls
INCREMENT-CLOCK                  1000000   1176.245   1176.245      0.001
END PROFILING DUMP

这似乎更合理。

您可以在https://github.com/NetLogo/NetLogo/issues或 bugs@ccl.northwestern.edu 报告错误。

于 2013-11-05T12:58:18.703 回答