我们正在微调我们的应用程序,我正在找出方法调用之间的时间延迟。方法可以是一个函数调用,也可以是一个rest进程。
let $x := fn:current-time()
let $re := xdmp:http-post('http://www.somerestdomain.com',())
let $y := fn:currrent-time()
return $x - $y
or
let $x := fn:current-time()
let $re := domain:call-some-long-running-function()
let $y := fn:currrent-time()
return $x - $y
分析这表明 XQuery 引擎优化了 fn:current-time()
调用并始终将 $x 和 $y 分配为相同的值。
我发现这个示例代码也有一些问题 w.r.t to MarkLogic http://en.wikibooks.org/wiki/XQuery/Uptime_monitor
我们使用的是MarkLogic Xml数据库,上面提到的伪代码是指MarkLogic API
有什么方法可以找出 XQuery TimeOut 吗?
最佳答案
使用xdmp:elapsed-time()
代替current-time()
,如果我没记错的话是4.2引入的新函数。
正如 Scott 和上面评论中所解释的那样,current-time()
是稳定的,并且会在一次运行中返回相同的值,除非您求助于 xdmp:eval()
,但这只会大大降低您的代码速度。
除此之外, 是一种从您的查询中获取时间信息的通用方法。最简单的方法是将相关代码的一部分复制到 CQ(http://developer.marklogic.com/code/cq),然后点击其中的 Profile
按钮。在使用 Profile 库 ( http://developer.marklogic.com/pubs/5.0/apidocs/ProfileBuiltins.html ) 中的函数的幕后。这些返回一个包含大量时间信息的 html 表。对于优化 MarkLogic Server 中的代码非常有值(value)。
关于XQuery - 记录 REST 调用或方法调用所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236766/