我用Java实现了两种算法。
为了比较它们的有效性,我将每个函数调用1000次并比较执行时间(使用System.currentTimeMillis()
)。
执行第一个需要2500毫秒,第二个需要1300毫秒。
根据这些结果,我认为在JavaCard中有一个显着的差异(就执行时间而言)。
但是如果我在JavaCard上加载2个小程序,它们对应于所描述的功能,那么第一个小程序需要2000毫秒而第二个需要1750毫秒......
如何在Java中解释它看起来快2倍,但不是在JavaCard中? 我注意到我不是在EEPROM中写入,而是在RAM中写入,因此它不能成为问题的根源。
你有任何理由来解释这种现象吗?提前谢谢。
答案 0 :(得分:2)
你运行的算法是在两个不同的平台上,所以最终的机器语言是不一样的。
答案 1 :(得分:0)
基准测试在Java中并不简单。您无法在循环中调用方法并期望获得一致且可靠的结果。您必须考虑许多因素,编译器优化和GC仅举几例。选择适合Java的性能测试工具来正确完成它。