Just so we understand how this works… The formats and tables are loaded into memory with the first of a given message, thereafter there is no overhead for loading these into memory, just the overhead of retrieving them for use.
Great efforts post 6.1 have been made by the developers to enhance the overall performance of the Xlate. There are techniques that can be coded in Xlates that get the job done but are inefficient, wherein the Xlate itself is performing well but is asked to perform more than it should. I have seen this most often with a misunderstanding of the ITERATE Action.
Interesting history, the product originally was not to have Tcl exposed as an extensibility language. As I understand it (from one of the founding fathers) there were some passionate discussions before Tcl was exposed. The original design intent was to use the toolset sans Tcl unless it was something that could not be done in the toolset, then use Tcl.
I suspect there are very few (maybe no) shops 100% Xlate. There is likely some Tcl outside the Xlate and within the Xlates to handle things the toolset does not. Within the Xlate itself, with the advent of the STRING Action Functions, there should be less need for Tcl within the Xlate to do the job.
Even then, I advocate writing reusable Tcl instead of ‘snippets’ imbedded in the Xlate. There is a slight performance advantage and means fewer Tcl modules to maintain.
email: jim.kosloskey@jim-kosloskey.com 30+ years Cloverleaf, 60 years IT – old fart.