有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在条目集合中循环时的java性能

我有一个非常神秘的效果:

在我的Xpage中,我有一个小javabean,在其中我循环遍历一个条目集合,使用getallentriesbykey(username)构建(得到大约200个条目)

viewA有2个排序列:用户名+客户ID

viewB有两个排序列:用户名+交货周数(文本)

使用viewA,循环所需时间不到1秒, 但是使用viewB,循环需要超过10秒! (对我来说)真正疯狂的是:当我将customerID列放在viewB中的weeknumber后面,并对其进行排序时,循环又快了

        ViewEntryCollection mycoll = myview.getAllEntriesByKey(myuser);
            myentry = mycoll.getFirstEntry();
            System.out.println("Start loop");
            while (myentry != null) {
            /* of course I do sth here, but the effect is the same 
            with nothing in, like in this example*/
                tmpentry = mycoll.getNextEntry();
                myentry.recycle();
                myentry = tmpentry; 
                // tmpentry.recycle();
            } 
            System.out.println("End loop");

我真的很困惑。。。也许有人能带点光来? 提前谢谢你,Uwe

更新:

它保持神秘:

我的观点。getAllEntriesByKey(myuser,key1)给了我200个条目——循环速度相当快。 我的观点。getAllEntriesByKey(myuser,key2)只给了我50个条目——循环需要6倍的时间

数据库有20000个文档,所有文档都带有读卡器字段。因此(我不熟悉xpages,而不熟悉lotusnotes…;-))我首先通过“myuser”收集它们,所有视图的第一个排序列中都有多值reader项。据我所知,这些集合只包含允许用户查看的文档。所以我看不出(myuser,key1)和(myuser,key2)集合之间的区别


共 (1) 个答案

  1. # 1 楼答案

    可以改用ViewNavigator类吗?它们在迭代性能方面得到了更好的优化,并且尽可能由XPages dominoView数据源和picker数据提供者使用

    我还没有对ViewEntry导航性能进行测试,所以我不确定什么是快速/不快速。正如大卫所说,我认为你的观点会产生影响。可能在从ViewEntry获取值之前和之后添加计时器。它听起来像是视图有一个排序列值的索引,用于第一个循环;但第二个循环实际上需要使用getColumnValues()。这只是一个假设,我不知道它的合理性