微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SaxonJS 性能问题

如何解决SaxonJS 性能问题

我刚刚发现并开始使用 Saxon-JS 来对 Peppol (Peppol.eu) 消息运行 Schematron 验证,而且效果很好!

我已将所需的 Schemat“预编译”为 JSON(使用 schxsltxslt3),然后我对数据执行 Saxonjs.transform()

由于这些样式表相当大,因此在通过 API 运行时需要一些时间和性能是关键。

我在 Promise.all() 中运行了三个调用添加了计时器。从计时器我可以看到函数调用是并行发生的,但 Saxonjs.transform() 的执行似乎是顺序的,即当第一个 Saxonjs.transform() 返回下一个开始时......

我尝试在代码添加 threads 以使其在“workers”中运行,但我需要向该函数发送一个 XMLDom 对象并且 threads 不支持它似乎...

enter image description here

430ms 的两次执行之间大约有 runTransform(),它们被称为:

let [xsdResult,valid,valid2] = await Promise.all([
  xsdValidation(event,xmlDoc),runTransform('EN16931-UBL-validation-preprocessed.sef.json',event,ves),runTransform('PEPPOL-EN16931-UBL.sef.json',ves)
]);

函数不应该并行运行(至少“更多”并行)吗?

解决方法

函数 await 中的另一个 runTransform() 是“阻塞的”,而不是最初认为的 SaxonJS.transform()...

注意那些承诺... :o

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。