Netlogo 中的高效编码,程序多还是少?

Efficient coding in Netlogo, many procedures or few?

就提高 NetLogo 中模型的性能而言,使用尽可能多的过程编码更好还是使用尽可能少的过程编码更好...

(为这个非常粗略的例子道歉,编码新手)

我问这个是因为在用许多命令编写相当复杂的程序时,"looks"用许多程序编写代码会更整洁。

许多程序

to move
    forward
    turn
end

to forward
    fd 1
end

to turn
    rt random 10
    lt random 10
end

程序更少

to move
    fd 1
    rt random 10
    lt random 10
end

干杯,

哈里

这种类型的组织实际上对性能没有任何影响。性能问题几乎总是由于算法问题(例如,要求所有海龟询问所有补丁,而您实际上只需要询问所有补丁)而不是代码组织。

我强烈建议始终组织您的代码,使其尽可能具有可读性。这使得发现算法问题变得更加容易,帮助您找出性能不佳的真正原因。

最后,您应该查看 profiler extension。它带有 NetLogo。它将准确细分每个过程花费了多少时间以及每个过程被调用了多少。这将帮助您识别代码中的问题点,并确定对代码的特定更改是否可以提高性能。如果您将代码组织成许多过程,探查器将能够为您提供更细粒度的结果。但是请注意,您可以很容易地过度使用许多过程并损害可读性。

对于代码的组织,可读性应该永远是第一位的。有时,出于功能或性能原因,您可能不得不实施更复杂的算法,因此可能更难阅读。有些算法更难推理,因此本质上更难阅读。您仍然应该尽您所能来组织算法的实现,以最大限度地提高可读性。