如何解决SaxonJS 性能问题
我刚刚发现并开始使用 Saxon-JS
来对 Peppol (Peppol.eu) 消息运行 Schematron 验证,而且效果很好!
我已将所需的 Schemat“预编译”为 JSON(使用 schxslt
和 xslt3
),然后我对数据执行 Saxonjs.transform()
。
由于这些样式表相当大,因此在通过 API 运行时需要一些时间和性能是关键。
我在 Promise.all()
中运行了三个调用并添加了计时器。从计时器我可以看到函数调用是并行发生的,但 Saxonjs.transform()
的执行似乎是顺序的,即当第一个 Saxonjs.transform()
返回下一个开始时......
我尝试在代码中添加 threads
以使其在“workers”中运行,但我需要向该函数发送一个 XMLDom 对象并且 threads
不支持它似乎...
在 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 举报,一经查实,本站将立刻删除。