我从命令行运行Netlogo时有点生疏,从未使用过基准测试功能。看起来很有希望。 =)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 /型号/测试
and
的NetLogo 6.0 /模型/基准
,并把从http://ccl.northwestern.edu/netlogo/models/models/test/benchmarks/文件放到我的基准目录。
在网站上,它说运行./sbt
,然后run-main org.nlogo.headless.HeadlessBenchmarker Bureaucrats
但是,我是n00bish,没有命令./sbt setup。我看到这是一个普通的扩展安装程序命令在线,但不知道该怎么办...对不起。所以我现在的问题是,接下来我要做些什么才能让它启动并运行?
从文档方面来看,我认为可能需要清理一下,/models/test/benchmarks/
中应该有一个文件,名为"Bureaucrats Benchmark.nlogo"
我没有意识到驱动程序将" Benchmark.nlogo"
添加到提供的名称中。如果文件被称为"<name> Benchmark.nlogo"
我没有得到它但它可能是说提供<name>
到org.nlogo.headless.HeadlessBenchmarker有用的,但有什么办法让我们打电话给所有的基准测试在基准目录中?文档中提到了它,但我没有看到任何命令。
让我知道你的想法和任何帮助表示赞赏!
编辑:从git下载repo后,正如Bryan建议的那样,我运行了./sbt并得到了以下错误。
[错误](运行主-0)抛出java.lang.ClassNotFoundException: org.nlogo.headless.HeadlessBenchmarker 抛出java.lang.ClassNotFoundException: org.nlogo.headless.HeadlessBenchmarker在 java.lang中.ClassLoader.findClass(ClassLoader.java:530) java.lang.ClassLoader.loadClass(ClassLoader.java:424)[trace] Stack trace suppress:运行最后一个root/compile:runMain获取完整输出。 java.lang.RuntimeException:非零退出代码:1 at scala.sys.package $ .error(package.scala:27)[trace]堆栈跟踪 已抑制:运行最后一个根/编译:runMain输出全部内容。[错误] (根/编译:runMain)非零的退出代码:1 [错误]总时间:2秒, 完成2017年4月10日下午2时16分21秒
我正在计划基准化一些基本原理,与Netlogo方面的一些替代实现进行比较。例如,半径内拉出一个正方形并通过它进行过滤。现在有更多的算法可以计算pi * r^2和Netlogo的4r^2结果。我认为通过使用您提供的代码(设置一个计时器)可能不足以满足JVM的要求 - 通常,您将有一个预热阶段并丢弃最初的几个结果。我不应该这样做吗?如果是这样,我不想小心我如何设计基准来测试性能。思考? – mattsap
我确实想看看低级别的实现和一些高级概念。我给出了半径范围内的示例,但我也将使用A *与IDA *进行比较,以便在网格中搜索一些示例。 – mattsap
在我看来,使用基准框架是一个好主意,因为你陈述的原因。正确的基准测试是很难的,我们的基准测试代码比'timer'更好。可悲的是,我们的基准框架早于JMH的存在;理想情况下,它将被重写为基于JMH的。 –