Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
I think you will not see significant difference if writing your ESQL code in a Plug-in node as compared to std ESQL in a compute node. This might not be a good idea as the maintenance of the code becomes difficult. What is your current throughput with compute node ESQL for this transformation?
Please remember that MQSI is not an application server, so you should not try implementing "heavy business processing logic" in it. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
I think he means writing the transformation logic in Java as opposed to ESQL.
You should try to optimise the ESQL code first, there some basic mistakes possible. Here's some ideas I had on the subject (bear in mind I am an architect and not a developer and also that we use 2.0.2).
Also see IBM support pac IP04 (MQSI - designing message flows for performance).
1 - Reduce the number of built-in function calls inside loops. In general reduce number of the function calls (eg CAST) wherever possible.
2 - Minimise the number of times a large message tree is referenced, especially with subscripts.
Assigning values to another variable or structure and then performing operations on this will avoid the need to lookup elements in large message trees. Locating an element in a large tree can be exponentially slow and the number of times a statement referencing a large message tree is executed should be minimised.
Temporary variables can be created for this purpose - there is no need to make them part of the output message tree since the values don't need to persist across nodes. But If they are part of the message tree - then declare them at the start of the tree to reduce the traversing required to locate them.
3 - Make use of * or [ ] to perform operations on all elements of an array without using a loop.
In some cases a loop can be replaced with a statement using .* or [ ] or such like ESQL syntax - this makes the loop "internal" to MQSI and should reduce the overhead associated with the individual iteration of statements. It seems to be that finding the position in the tree structure is what is taking the time.
4 - Use reference variables to index into arrays or trees (WMQI 2.1 and above).
5 - Using several smaller working arrays rather than a large one. Construct the final output at the end - if this will reduce the number of times elements long way down a tree (eg over 1000 deep) are referenced it will improve performance.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum