我正在使用Netbeans开发NetLogo扩展,并且我希望在正确的流程上接收建议以优化我的代码......我通常在NetBeans中编写代码,然后使用此编译NetBeans中的扩展添加到我的build.xml(我在这里复制它,因为它可能对某人有用):
<target name="-pre-init">
<property name="project.name" value="myextension" />
<property name="class.manager" value="org.nlogo.extensions.myextension.MyClassManager" />
<manifest file="manifest.mf">
<attribute name="Manifest-Version" value="1.0" />
<attribute name="Extension-Name" value="${project.name}" />
<attribute name="Class-Manager" value="${class.manager}" />
<attribute name="NetLogo-Extension-API-Version" value="5.0" />
</manifest>
</target>
<target name="-post-jar">
<delete file="manifest.mf"/>
</target>
此时,我将.jar拖到右侧文件夹中,然后从终端打开NetLogo模型,以查看我的扩展是否写了一些东西/错误/无论如何......因为我不是计算机科学家,我我想知道这是否是正确的方法......我知道它有效,但如果我必须看到我的代码在哪里慢或消耗内存怎么办?也许我可以用调试器来优化它,但在NetBeans之外我不知道该怎么做......
我非常感谢专业开发人员对最常用工作流程的建议......
祝你好运, 西蒙
答案 0 :(得分:5)
好问题。我很好奇其他人会如何回应。
我创建了一个符号链接,从扩展使其jar的位置到NetLogo扩展文件夹中的适当命名的文件夹。因此,例如,如果我正在进行网络扩展,我将运行:
ln -s /path/to/NW-Extension /path/to/Netlogo\ 5.0.x/extensions/nw
这样,你就不必经历在每次构建时拖动jar的麻烦。
我知道它有效,但是如果我必须看到我的代码在哪里慢或消耗内存呢?
对于分析,我使用VisualVM。我知道它随NetBeans一起提供,但您也可以将它作为独立程序运行。它可以连接到任何正在运行的JVM程序。因此,在测试扩展时,只需告诉VisualVM连接到NetLogo(尽管它通常显示为“Local Application pid 42138”或其他内容)。采样器非常适合分析。
当我使用扩展时,我通常不使用调试器。但是,您应该能够run NetLogo from source(使用5.0.x)。我不使用NetBeans,但您应该能够将其指向特定jar的源代码,以便NetBeans知道在哪里查找jar中类的源代码。这应该允许您无缝调试扩展。
这也允许您为您的扩展程序编写language tests。为此,您甚至不需要了解NetBeans的内容;你可以sbt
(它包含在NetLogo中,是构建和运行它的最简单方法)。有关详细信息,请参阅我链接到的Wiki页面。