Slow performance for text manipulation of an InStream

andrewt
Member Posts: 73
Hi all,
I am trying to use a data stream received as an InStream. The content is text and I need to modify some elements at the beginning and the end of the stream in order to be able to further process the data.
What I've done is converting the InStream into a text variable, do the modifications I need and convert it back into an InStream through a TempBLOB for further processing.
This works fine as long as the initial InStream has only a small amount of data, but performance slows down significantly when the amount of data increases.
The issue is the conversion of the InStream into a text variable which has been implemented as follows:
...where HelperText and TextTotal are variables of type Text without a defined length.
This code snippet has been taken from msdn https://msdn.microsoft.com/en-us/library/dd355187(v=nav.90).aspx but it seems like it's not the best way to do it.
So the question is if there's a different way to either accelerate the text conversion of the InStream or manipulate the InStream itself directly ?
As always, any help is highly appreciated.
Many thanks
Andrew
I am trying to use a data stream received as an InStream. The content is text and I need to modify some elements at the beginning and the end of the stream in order to be able to further process the data.
What I've done is converting the InStream into a text variable, do the modifications I need and convert it back into an InStream through a TempBLOB for further processing.
This works fine as long as the initial InStream has only a small amount of data, but performance slows down significantly when the amount of data increases.
The issue is the conversion of the InStream into a text variable which has been implemented as follows:
WHILE NOT (InStream.EOS) DO BEGIN InStream.READTEXT(HelperText); TextTotal += HelperText; END;
...where HelperText and TextTotal are variables of type Text without a defined length.
This code snippet has been taken from msdn https://msdn.microsoft.com/en-us/library/dd355187(v=nav.90).aspx but it seems like it's not the best way to do it.
So the question is if there's a different way to either accelerate the text conversion of the InStream or manipulate the InStream itself directly ?
As always, any help is highly appreciated.
Many thanks
Andrew
0
Answers
-
Maybe try to specify length in READTEXT call, to read big chunks of text, rather reading it char by char:
HelperText : Text[1000]; InStream.READTEXT(HelperText, MAXSTRLEN(HelperText)); TextTotal += HelperText;
Slawek Guzek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-030
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions