SaxonJS 性能问题

SaxonJS performance conserns

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

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

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

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

我尝试将 threads 添加到代码中以在“workers”中获取它 运行ning 但我需要将 XMLDom 对象发送到该函数并且 threads 不支持似乎...

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

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', event, ves)
]);

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

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

记住那些承诺...:o