XslTransform sembra essere stato deprecato da Microsoft in favore di XslCompiledTransform. Teoricamente, se stavo facendo una sola trasformazione durante l'esecuzione della mia applicazione, non dovrei interpretare l'XSLT (tramite XslTransform) più veloce della sua compilazione? Se è così, XslTransform è scritto così male che i miglioramenti apportati a XslCompiledTransform sono più che compensativi?XslTransform vs XslCompiledTransform
risposta
Si potrebbe desiderare di vedere le differenze tra documentati XslTransform
e XslCompiledTransform
here e here, e prendere la decisione da soli.
Inoltre, ci sono alcuni casi in cui XslTransform è più incompliant. Più lavoro è stato fatto sulla sicurezza in XslCompiledTransform.
Così, un sacco di motivi si dovrebbe considerare l'utilizzo della nuova XslCompiledTransform
al posto del vecchio XslTransform
, anche nei casi in cui la trasformazione verrà eseguito solo una volta e potrebbe essere leggermente più veloce con il vecchio XslTransform.
Bene, si ha il tempo di esecuzione (lento) di XslTransform rispetto al tempo di compilazione di XslCompiledTransform più il suo (veloce) tempo di esecuzione. Non esiste un modo teorico per decidere in modo definitivo questo confronto.
La teoria suggerisce: i tempi di esecuzione dipendono dall'input e dalle operazioni richieste e il tempo di compilazione dipende dalla complessità dell'XSLT. La pratica conferma che con input banali e XSLT complessi un'esecuzione una volta XslTransform è decisamente più veloce.
Tuttavia, per tutte le applicazioni reali è necessario XslCompiledTransform se solo per il fatto che XslTransform è deprecato e può benissimo contenere difetti che non verranno mai riparati. In realtà avevo alcuni fogli di stile che si comportavano in modo strano sotto XslTransform e funzionano perfettamente con XslCompiledTransform.
È consigliabile utilizzare XslCompiledTransform in ogni caso poiché XslTransform è ammortizzato e può essere rimosso dalle versioni future del framework.
E 'ancora da contrassegnare come 'Obsoleto', tuttavia ... –
Viene contrassegnato come obsoleto ora –
Come punto dati non correlato, ho appena sprecato un paio di ore per il debug di un XSLT che funzionava correttamente e non funzionava più. Venuto fuori l'XSLT andava bene, il problema era che il codice che lo applicava veniva aggiornato da XslTransform (che funzionava perfettamente) a XslCompiledTransform (che lo trasforma male), qualche tempo fa, e che faceva scattare l'errore.
Quindi, non è felice con XslTransform essere obsoleto qui, come ho appena avuto a ripristinare il codice di usarlo ... :(
Entrambi hanno i loro pro e contro. Sto usando entrambi, ma in diversi Scenario Sto utilizzando XslTransform per passare l'output a una variabile di controllo XML e scrivere l'output in controllo letterale, ma quando ho bisogno di passare a controllo XML a pagina, ho bisogno di XslCompiledTransform. Questo perché l'output di entrambi i metodi sono diversi
- 1. Qual è l'alternativa non deprecata a XmlDataDocument e XslTransform?
- 2. Impedire a XslCompiledTransform di utilizzare tag a chiusura automatica
- 3. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 4. VS 2008 vs VS 2008 Express
- 5. .NET vs ASP.NET vs CLR vs ASP
- 6. Atomikos vs JOTM vs Bitronix vs?
- 7. Accumulare vs piega vs ridurre vs comprimere
- 8. ACE vs Boost vs Poco vs wxWidgets
- 9. VS 2013 MSTest vs nUnit vs xUnit
- 10. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - AFFIDABILITÀ
- 11. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 12. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 13. e vs * e | vs +
- 14. SpiderMonkey vs JavaScriptCore vs?
- 15. * vs ** vs *** in Proguard?
- 16. bundler vs RVM vs gemme vs RubyGems vs gemsets vs system ruby
- 17. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 18. innerText vs innerHtml vs label vs text vs textContent vs outerText
- 19. Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
- 20. Iterator vs. Reference vs. pointer
- 21. Selenium vs. SimpleTest vs. WatiN
- 22. BasicHttpBinding vs WsHttpBinding vs webHttpBinding
- 23. Boo vs C# vs Python?
- 24. StringBuffer vs StringBuilder Vs StringTokenizer
- 25. JSF vs Facelets vs JSP
- 26. Qcodo vs. CakePHP vs. Zend
- 27. select vs poll vs epoll
- 28. RazorEngine vs RazorTemplates vs RazorMachine
- 29. cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
- 30. Bitmap vs ImageView vs Drawable
Nota che su alcune trasformazioni complesse, XslCompiledTransform possono essere un * lotto * più lento di XslTransform, indipendentemente dal sovraccarico della compilazione. Sto ancora lavorando con il supporto tecnico della MS per capire esattamente quale sia il problema, ma abbiamo un caso in cui le prestazioni di XslCompiledTransform sono molto peggiori. Questo sembra essere un vero caso, quindi in generale sono assolutamente d'accordo che XslCompiledTransform sia preferibile – Andy
@Andy, Sì, nessuno può confermare che XslCompiledTransform sia più veloce per * tutti *, numero infinito di trasformazioni.Sappiamo per esperienza che è * generalmente * più veloce. –