locked
BizTalk map vs XSLT performance RRS feed

  • Question

  • I am using BizTalk MAP and inside biztalk map I am using table looping, table extractor, Scripting, looping functoids. 

    The same can be achieved in biztalk map by referencing XSLT. 

    so Performance wise, which method would be better using BizTalk Map or biztalk map referencing XSLT.

    • Edited by sriaug Thursday, November 17, 2016 2:30 PM
    Thursday, November 17, 2016 2:28 PM

Answers

  • Why do u need this ? Are u noticing any perf issues in your map.

    If u code ur xslt well, it would be faster than the BTM but overall from a process point of view u won't notice much difference. (Unless u have multi level xml node mapping and u r going back and forth the node with ../../ stuff a lot)


    Pi_xel_xar

    Blog: My Blog

    BizTalkApplicationDeploymentTool: BizTalk Application Deployment Tool/

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 2:41 PM
    Answerer
  • Hi Sriaug,

    Script functoid has the advantage of reuse as you can copy/paste logic. As for performance it depends on what is being done inside script. There is a nice blogpost by Eliasen Custom XSLT, Scripting functoid, or built-in functoids – a question about religion? you review on this subject. Having you own XSLT can perform better that generated XSLT by BizTalk. I always use custom XSLT, unless I have a really simple map with very few or no functoids.
    You can use grouping, sorting, nested loops, templates, access helper classes (either pre-compiled external assemblies or inline script). And the biggest advantage is the ability to write comments to explain what is happening. 

    More performance can be read in this blog post! You can always do your own tests and monitor some relevant performance counters.



    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, November 17, 2016 2:54 PM
    Moderator
  • A BizTalk Map compiles to XSLT.

    Our most important question is, why are you asking?  Have you measured a specific performance issues you'd like to address?  If not, 99%, don't worry about it.

    Unless you are using the a Database Functoid as a source to Table Looping/Extractor.  If so, then any 'performance' issues in the XSLT are way overshadowed by the Database calls.

    We can help you with that.

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 3:55 PM
    Moderator
  • I have noticed that in some instances the XSLT generated by the mapper is not as efficient as XSLT that you can write yourself. However, this is not really a major issue.

    In most cases, you will not notice a difference. The .btm is eventually converted to XSLT before being executed by the CLR, so pure XSLT should be faster by a whisker but should not be of any measurable impact.


    Thanks Arindam

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 4:31 PM
    Moderator

All replies

  • Why do u need this ? Are u noticing any perf issues in your map.

    If u code ur xslt well, it would be faster than the BTM but overall from a process point of view u won't notice much difference. (Unless u have multi level xml node mapping and u r going back and forth the node with ../../ stuff a lot)


    Pi_xel_xar

    Blog: My Blog

    BizTalkApplicationDeploymentTool: BizTalk Application Deployment Tool/

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 2:41 PM
    Answerer
  • Hi Sriaug,

    Script functoid has the advantage of reuse as you can copy/paste logic. As for performance it depends on what is being done inside script. There is a nice blogpost by Eliasen Custom XSLT, Scripting functoid, or built-in functoids – a question about religion? you review on this subject. Having you own XSLT can perform better that generated XSLT by BizTalk. I always use custom XSLT, unless I have a really simple map with very few or no functoids.
    You can use grouping, sorting, nested loops, templates, access helper classes (either pre-compiled external assemblies or inline script). And the biggest advantage is the ability to write comments to explain what is happening. 

    More performance can be read in this blog post! You can always do your own tests and monitor some relevant performance counters.



    Rachit Sikroria (Microsoft Azure MVP)

    Thursday, November 17, 2016 2:54 PM
    Moderator
  • A BizTalk Map compiles to XSLT.

    Our most important question is, why are you asking?  Have you measured a specific performance issues you'd like to address?  If not, 99%, don't worry about it.

    Unless you are using the a Database Functoid as a source to Table Looping/Extractor.  If so, then any 'performance' issues in the XSLT are way overshadowed by the Database calls.

    We can help you with that.

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 3:55 PM
    Moderator
  • I have noticed that in some instances the XSLT generated by the mapper is not as efficient as XSLT that you can write yourself. However, this is not really a major issue.

    In most cases, you will not notice a difference. The .btm is eventually converted to XSLT before being executed by the CLR, so pure XSLT should be faster by a whisker but should not be of any measurable impact.


    Thanks Arindam

    • Proposed as answer by Pi_xel_xarEditor Friday, November 18, 2016 8:18 AM
    • Marked as answer by sriaug Friday, November 18, 2016 2:15 PM
    Thursday, November 17, 2016 4:31 PM
    Moderator