XQuery - 记录 REST 调用或方法调用所花费的时间

标签 xquery marklogic

我们正在微调我们的应用程序,我正在找出方法调用之间的时间延迟。方法可以是一个函数调用,也可以是一个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/

相关文章:

java - XPath/XQuery : How to retrieve all the array instead the first element when using

sql - 如何为表中的任何列选择类似于某个字符串的记录?

xml - TSQL XML 将节点值转换为 int

marklogic - 我们可以在 MarkLogic 的 Optic API 查询中使用 DATEADD 函数吗

java - 使用 Java 和 Marklogic 转义 XML

java - 如何编写跨越 xsd :any element? 的 XQuery

xquery - 如何使用 xslt-xquery-serialization 命名空间导出到 JSON

XQuery,如何知道两组独特术语之间的共同术语数量

marklogic - 使用未过滤选项搜索文档,其值以包含特殊字符的字符串开头?

curl - 查询 MarkLogic 7 SPARQL 端点