I had a code where I was combining several XML documents into one and used a BigText variable for the job. At design time everything looked fine but when I executed the code in the Role Tailored Client everything was slow. I sent this issue to Microsoft and the product team has responded.
It is true that AddText used in a loop is slower in RTC than in CC. The reason is the underlying .Net string type. As mentioned in the immutability section in: http://msdn.microsoft.com/en-us/library/system.string.aspx#Immutability the creation of many immutable strings can be very time consuming. Since the backing field in NAV is a string we have the same problem – and it would be vastly inefficient in all other scenarios to create a StringBuilder for each BigText variable – and you only save instantiating strings if you do more than one concatenation.
This leaves us the following options:
– If partner is adding texts – consider using .Net Interop and use the StringBuilder class – and document the changed behavior of BigText
– Refactor code to avoid hundreds / thousands of small additions (e.g. by building the total big text in chunks of e.g. 1000 – but will have to look at perf of that)
– Create a new feature for a StringBuilder class in A/L (would possibly have to work for the other text types as well?)
- I doubt that this would be prioritized in Sicily
I know that this is an unwanted side effect of using .Net strings – but that is also what buys us Unicode etc., so I would prefer that we document this new behavior.
So I rewrote this bit and am now using OutStream instead. Just wanted you to know.