java在另一个包中调用方法的时间是多少?

时间:2010-12-30 06:37:33

标签: java

我有一项任务,我需要对我的两种方法进行可行性研究,并找到优化的方法。

有两个包A和B. 用户输入在A中收集,然后发送到B执行。 现在我的方法是 1.逐个从包A中调用B方法。 2.在B中创建一个公共方法,并将所有输入作为参数发送。

哪个是可行且最好的,我知道2在代码优化和调用次数方面都很好。 但是,我想了解上述方法中的执行时间差异 java在另一个包中调用方法需要多长时间?是否有任何默认值,如x纳秒或y毫秒。

根据我所选择的时间,我可以选择适当的时间。

由于

4 个答案:

答案 0 :(得分:3)

首先,就JVM的性能而言,在同一个包中调用方法和在另一个包中调用方法之间绝对没有区别。

其次,方法调用开销不太可能是性能问题。每个方法调用的开销非常小,并且JVM经常会内联频繁调用的方法;它可以更快进行单独的调用,以便为JVM提供更好的优化机会。

也就是说,如果程序中存在性能问题,您应该对其进行分析并查看 - 像这样的问题很少有“一刀切”的答案。始终测量实际数据的性能,但不要过早优化每个方法调用。

答案 1 :(得分:2)

System.nanoTime()

//method call  

System.nanoTime()

注意:与性能

无关

答案 2 :(得分:0)

我认为您正在尝试分析数据流和执行时间。 在第一种方法中,您将获得用户输入并调用其他一些类 在包中B.如果您的设计以这样的方式对输入数据进行业务验证 然后你需要调用用户提交的每个数据。如果用户输入的数据更多, 那么多年你需要在包B中验证或执行业务方法。在此 例如,它与输入数据成正比。

在第二种方法中,将用户提交的所有业务数据包装在一个值对象中(即在一个 传统方式)并将该值对象发送到包B中的一个类并执行您的业务 功能。在这种情况下,您将只从包A调用包B中的类一次。 这个时间测量可以使用System.currentTimeMillis()来完成。

希望这能澄清你的怀疑。

答案 3 :(得分:0)

您基于用户输入进行方法调用。

用户输入可能需要10亿到1000亿纳秒,方法调用时间不到10纳秒。如果您的方法很小并经常调用,则可能会内联,因此方法调用将消失。

无论您是一次还是多次调用该方法,开销都不可能大到足以让用户注意到差异。