使用Saxon 9 HE,编译样式表需要几秒钟(在.Net中)。
任何人都可以验证编译的转换是否是线程安全的。即如果我编译样式表并保留实例以便将来调用。将从多个线程同时调用此编译的Transform实例会导致任何问题吗?
XsltTransformer transformer = proc.NewXsltCompiler().Compile(new Uri("file:///" + styleSheet)).Load();
//Store transformer instance as class variable and reuse it to eliminate compilation time
答案 0 :(得分:1)
请参阅the documentation on saxonica.com,您只需编译XsltExecutable ex = proc.NewXsltCompiler().Compile(new Uri("file:///" + styleSheet));
一次,然后可以在多个线程中使用XsltExecutable
:“XsltExecutable是不可变的,因此是线程安全的。”。< / p>
关于XsltTransformer
,it says“不应在多个线程中同时使用XsltTransformer。但是,在单个线程中重用对象以多次运行相同的样式表是安全的。”