所有三个代码片段都是相同的:它们创建并填充SSJS对象或具有不同类型数据/对象的HashMap.对于每个片段,我测量了超过1000次运行的平均执行时间,其中n(=片段中的最大循环索引)为1000000(100万).基准测试是使用java.lang.System.nanoTime在Domino 9.0.1服务器上执行的.
执行时间的比例如下:
T [HashMap] / T [SSJS对象]> 154%
T [HashMap with put method] / T [SSJS Object]> 266%
T [HashMap with put method] / T [HashMap]> 172%
换一种说法:
>填充HashMap比填充SSJS对象花费的时间长约54%
>使用put方法填充HashMap比填充SSJS对象长约166%
>使用put方法填充HashMap比使用SSJS填充HashMap需要大约72%“.”符号
我的问题如下:
>我经常看到SSJS代码,其中HashMaps用于存储数据.
如果提供更好的标准SSJS对象,为什么不使用它们
性能?
>为什么使用看跌期权效率低得多
方法而不是SSJS“.”用于设置a值的表示法
HashMap类?
oo = {};
初始化JS对象一次,在第二个循环中它覆盖现有对象.
hw = new HashMap();
每次生成一个新对象,并将旧对象抛出到垃圾收集器.那会慢一些.
您的结论:您的数据不支持“填充Hashmap花费xx更长时间”.您编写的代码支持“以快速顺序创建和丢弃HashMaps更慢”.
如果您想进行合理的测试,您需要:
>创建一个对象(这是通常的用例)并将“很多东西”放入其中并获得真实的想法:将100,000个内容放入其中.然后读取100,000个,然后更新100,000个内容.
HashMaps的主要原因:您也可以在Java中使用它们,并且您不能像使用JavaScript对象那样意外地向它们添加功能.点对点放置转换是由于不同的类型转换机制.