希望这是一个简单而快速的问题。我最近在 Netbeans 中开发了一个 CPU 密集型 Java 应用程序。它使用每秒数万次的 A* 寻路来解决瓷砖匹配游戏。该应用程序已完成,并且运行得非常快(我一直在 netbeans 中进行测试)。我将其计时为每秒 700 次尝试(每次尝试可能是 20 次左右的寻路)。当我构建项目时,它会创建一个 jar,我可以在 netbeans 之外运行它。如果我使用命令行(Windows 7)并使用 java -jar theFile.jar,我会以每秒 1000 次尝试的速度计时。这是可以理解的,因为 IDE 可能使用了一些 cpu 电源并阻止它(我的应用程序是多核的,您可以设置数字。我通常使用 3/4,因此它不会使我的系统减慢太多)。现在,令人困惑的部分。显然我不 不希望用户每次想在 Windows 上运行此应用程序时都必须使用命令行。他们应该能够点击罐子。问题是,当我双击 jar 文件时,程序每秒运行 300 次尝试!
为什么这三种运行完全相同的程序的方式会在其他条件不变的情况下对性能产生如此巨大的影响?我的解决方法是创建一个脚本来通过命令行运行 .jar,还是你们知道这里发生了什么?非常感谢!
编辑:新信息
我使用以下命令创建了一个批处理文件: java -jar theFile.jar 执行此命令时,它的运行速度与我在控制台中运行它的速度相同(因此,1000 att/sec)
但是,我还用一个简单的 c++ 程序制作了一个可执行文件。该程序只有几行,并且是 System("java -jar theFile.jar"); 并返回 0;。令人难以置信的是,它以双击 jar 文件的速度运行,大约 300att/sec。多么奇怪!它很可能是不同的 IDE 参数,但我不确定如何检查默认系统参数,或者如何针对这个特定的 jar 修改它们。