网标标杆

Netlogo Benchmarking

我对从命令行 运行ning Netlogo 有点生疏,以前从未使用过基准测试功能。这似乎很有希望。 =)

我完全是一开始,因为看起来 NetLogo 6.0 可能与 5.*.

有点不同

我正在尝试让基准测试套件达到 运行:https://github.com/NetLogo/NetLogo/wiki/Benchmarking

现在,我从 http://ccl.northwestern.edu/netlogo/models/models/test/benchmarks/

下载了一些文件

并在我的 NetLogo 6.0 目录中创建了 2 个目录

NetLogo 6.0/models/tests

NetLogo 6.0/models/benchmarks

并将 http://ccl.northwestern.edu/netlogo/models/models/test/benchmarks/ 中的文件放入我的基准目录。

在网站上,它说 运行 ./sbt 然后 run-main org.nlogo.headless.HeadlessBenchmarker Bureaucrats 但是,我是 n00bish 并且没有命令 ./sbt setup。我在网上看到这是一个通用的扩展安装程序命令,但不确定如何处理它……抱歉。所以我现在的问题是,接下来我该怎么做才能启动并 运行ning?

从文档方面来看,我认为可能需要澄清 /models/test/benchmarks/ 中应该有一个名为 "Bureaucrats Benchmark.nlogo" 的文件 我没有意识到驱动程序附加 " Benchmark.nlogo" 到提供的名称。如果文件名为 "<name> Benchmark.nlogo"

,则将 <name> 提供给 org.nlogo.headless.HeadlessBenchmarker 可能会很有用

我还没看懂,请问有什么办法可以调用benchmarks目录下的所有benchmarks吗?文档中有对它的引用,但我没有看到任何命令。

让我知道您的想法,我们将不胜感激!

编辑:按照 Bryan 的建议,从 git 下载存储库后,我 运行 ./sbt 并收到以下错误。

[error] (run-main-0) java.lang.ClassNotFoundException: org.nlogo.headless.HeadlessBenchmarker java.lang.ClassNotFoundException: org.nlogo.headless.HeadlessBenchmarker at java.lang.ClassLoader.findClass(ClassLoader.java:530) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [trace] Stack trace suppressed: run last root/compile:runMain for the full output. java.lang.RuntimeException: Nonzero exit code: 1 at scala.sys.package$.error(package.scala:27) [trace] Stack trace suppressed: run last root/compile:runMain for the full output. [error] (root/compile:runMain) Nonzero exit code: 1 [error] Total time: 2 s, completed Apr 10, 2017 2:16:21 PM

./sbt 包含在 NetLogo 存储库中。这是 this 文件。 运行 如果需要的话,它会自行安装 sbt(和 scala)。当你 运行 它时,请确保你在 NetLogo 存储库的根目录中。

编辑:

等等,澄清一下,您是要对自己的模型还是 NetLogo 本身进行基准测试?

如果 NetLogo 本身(这就是 https://github.com/NetLogo/NetLogo/wiki/Benchmarking is talking about), you need to checkout the NetLogo repository from github: https://github.com/NetLogo/NetLogo 。您可能想要这样做的唯一原因是您是否计划为核心 NetLogo 代码做出贡献或正在开发扩展或其他东西.

如果只是对自己的模型进行基准测试,您不想做任何事情。通常,最好从 NetLogo 程序中而不是命令行进行基准测试。最简单的基准测试方法是做这样的事情:

setup reset-timer repeat 1000 [ go ] print timer

这将告诉您模型完成 1000 次刻度需要多长时间。因此,运行 修改您的模型几次,然后 运行 再修改几次,这会让您了解您的更改如何影响性能。

如需更深入的基准测试和分析,请使用 profiler 扩展。这将分解您的程序,告诉您每个过程需要多长时间等等。

我已经用当前正确的命令更新了 wiki 页面。 (我把 run-main 改成了 headless/runMain。)

is there any way for us to call all the benchmarks in the benchmarks directory?

我认为如果您不通过基准名称,它就会这样做...?值得一试。 (如果你弄明白了,请更新维基页面。)