2017-05-11 23 views
0

介绍是不是将java用于多次调用的短进程?

我打算用Java编写的算法(这样我就可以学习这门语言),其运行时间应在几秒钟。这个小算法将从bash调用大约10000次。

问题

  • Java将每即使通过bash称为10,000次的循环过程中被调用时,它是正确的做优化?

  • 我的代码可能会占用约2000行,并运行约5秒钟。您认为执行优化的时间与运行时间相比可以忽略不计?

  • 有没有一种方法来计算优化一次(就像它会在C++中工作)?

  • java是不是被用于多次调用的短进程?

+0

每次来自bash的调用都是一个新进程,或者您是否计划将其妖魔化? – Raphael

+0

我不确定“妖魔化”是什么意思。该进程将是多线程的(可能是10个线程)。分叉将发生在bash中,而不是在java中。不同的java进程不通信。我是否回答你的问题@Raphael? –

+2

据我所知,没有任何VM语言在进程调用之间保持优化,所以如果你打算有一个长时间运行的后台进程来接收调用来处理的东西,它将会起作用。 如果您的意思是每次调用它并创建一个JVM进程,性能将无法忍受。 – Raphael

回答

1

很难预测什么优化将在运行期间发生,但如果进程重新每次调用开始,只运行了几秒钟,它会很难让任何区别。编译式优化不会受到影响,但运行时优化可能会发生。但是,JVM本身的启动时间将压倒任何好处。此外,如果程序本身很小且算法正确,那么运行时优化程序可能几乎没有任何功能。

现阶段的微观优化并不富有成效。您是否有任何任何测量的过程的每个部分需要多长时间?如果不是,你会如何知道是否有任何帮助,甚至是哪里有瓶颈?

在这种情况下,您最好的选择是将JVM启动时间消除为一个因素。例如,将Java程序设置为服务器,并通过服务调用从shell脚本调用它。程序最慢的部分消失了,JVM可以积累多次使用的统计信息。

相关问题