SaxonJS 性能问题
SaxonJS performance conserns
我刚刚发现并开始使用 Saxon-JS
能够 运行 对 Peppol (Peppol.eu) 消息进行 Schematron 验证,效果很好!
我已经将所需的 Schemat“预编译”到 JSON(使用 schxslt
和 xslt3
),然后对数据执行 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
我刚刚发现并开始使用 Saxon-JS
能够 运行 对 Peppol (Peppol.eu) 消息进行 Schematron 验证,效果很好!
我已经将所需的 Schemat“预编译”到 JSON(使用 schxslt
和 xslt3
),然后对数据执行 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