在我的XPages应用程序中,我经常使用 SSJS对象(com.ibm.jscript.std.ObjectObject)来缓存数据。如果我使用 java.util.HashMaps 来检查性能是否有所提高,我会对以下代码片段(SSJS)的执行时间进行基准测试:
所有三个代码片段都是相同的:它们创建并填充SSJS对象或具有不同类型数据/对象的HashMap。对于每个片段,我测量了超过1000次运行的平均执行时间,其中n(=片段中的最大循环索引)为1000000(100万)。基准测试是使用java.lang.System.nanoTime。
在Domino 9.0.1服务器上执行的执行时间的比率如下:
换句话说:
我的问题如下:
答案 0 :(得分:8)
查看你的代码(你应该把代码放在那里,而不是图像),你要比较苹果和橘子。
oo = {};
初始化JS对象一次,在第二个循环中它覆盖现有对象。
hw = new HashMap();
每次生成一个新对象,并将旧对象抛出到垃圾收集器。那会慢一些。
您的结论:您的数据不支持“填充 Hashmap花费xx更长时间”。您编写的代码支持“以快速顺序创建和丢弃 HashMaps”更慢。
如果您想进行合理的测试,您需要:
HashMaps的主要原因:您也可以在Java中使用它们,并且您不能像使用JavaScript对象那样意外地向它们添加功能。点对点放置转换是由于不同的类型转换机制。