性能度量:Java vs JavaCard



我用Java实现了两种算法。

为了比较它们的有效性,我调用每个函数1000次并比较执行时间(使用System.currentTimeMillis())。

执行第一个需要2500毫秒,第二个需要1300毫秒。

对于这些结果,我认为在JavaCard中有显著的差异(在执行时间方面)。

但是如果我在JavaCard上加载2个applet,它们对应于所描述的函数,第一个需要2000毫秒,第二个需要1750毫秒…

如何解释在Java中,它看起来快了2倍,但在JavaCard中却没有?我注意到我不写EEPROM,但在RAM中,所以它不能是问题的根源。

你有什么理由来解释这个现象吗?

你运行的算法是在两个不同的平台上,所以最终的机器语言是不一样的。

在Java中进行基准测试并不简单。你不能只在循环中调用一个方法,就期望得到一致和可靠的结果。您必须考虑许多因素,编译器优化和GC只是其中的几个。为Java挑选一个性能测试工具来正确地执行它。

最新更新