gpt4 book ai didi

XPages - 在 @DbLookup 中使用 @DbName

转载 作者:行者123 更新时间:2023-12-01 23:20:34 24 4
gpt4 key购买 nike

对于我在 XPage 应用程序中使用的一些 SSJS 代码,我有一些 @DbLookup 公式。到目前为止,我一直使用 @DbName() 作为 @DbLookup 公式的第一个参数。如果我将 @DbName() 切换为“”(应用程序中只有一个数据库),@DbLookup forumlas 会执行得更快吗?一般来说,是否有比 @DbLookup 更快的替代方案?

最佳答案

这实际上是一个好问题。

认为从 @DbName() 切换到“”时,您不会发现查找时间有所不同 - 这真的让我感到惊讶。

现在您还要求提供可能更快的替代方案。首先,如果您有大量 SSJS,由于 SSJS 语句的缓存有限,使用 Java 可能会更快(请在此处查看更多信息:http://nathantfreeman.wordpress.com/2013/04/12/xpages-performance-pro-tips/)。

当 @-engine 被 Damien Katz (http://damienkatz.net/2005/01/formula-engine-rewrite.html) 重写时,@-formula 变得非常快。因此,您可能会发现老式的“@Dblookup(....)”(即公式 - 不是 SSJS)可能会更快 - 取决于 SSJS @DbLookup() “绑定(bind)”到底层 API 的方式。它应该是易于测试 - 只需编写一个 Java 类,它将返回 getSession().evaluate("@DBlookup(....)") 的结果 - 并且您可以通过 EL(表达式语言)将其绑定(bind)到您的 XPage。与往常一样,如果你想要速度,那么你必须确保你检索的数据在 View 中。然后代码将只读取 View 索引。如果你引用不在 View 索引中的项目,则底层必须打开便条 - 如果上面有附件,那么速度可能会非常慢!!!几年前我就惨痛地吸取了教训。

我尝试使用 getAllEntries 与使用 ViewNavigators 来从 View 中读取数据。在我尝试过的示例中,我不能说使用 View 导航器更快 - 尽管理论上我认为它们应该更快。您可能想要将此方法与上面的评估方法进行比较。

现在,还有其他替代方案 - 取决于您的应用程序的逻辑。我使用 MVC 模式(可以在此处找到半成品演示应用程序: https://bitbucket.org/john_dalsgaard/demo-apps )。在此模式中,我将 Java 对象中的所有数据缓存在内存中。所以我只读过一次——然后就把版本记在内存里。当我创建或更新数据时,我也会更新内存表示。内存中的查找(使用映射)速度非常快!但同样,它确实取决于应用程序中的逻辑。

如果您有一些有趣的发现,请告诉我们;-)

/约翰

关于XPages - 在 @DbLookup 中使用 @DbName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com