Well.. since DBpro uses null terminated strings, It'd depend largely on how much string processing your application does. So even though this sounds counter intuitive, you could bypass a lot of the native string engines overhead by going down the memblock/string pointer route and rolling your own processing functions.
Most people are aware that null terminated strings perform poorly when string operations are cumulative (eg.
A$=A$+B$ type stuff). This occurs, because underneath this seemingly insignificant operation, there's
len() operation being performed every addition (and potentially allocations and copies also). This
Len() operation runs through the strings looking for the zero characters. Not a huge cost on small strings, but can have significant impact the bigger they get. And surprising they don't have to be all that large at all to bring your program to a grinding halt.
Eg.
sync off
For max=100 to 10000 step 500
a$=""
b$="some text fragment"
t=timer()
For lp=0 to Max
a$=a$+B$
next
print "Additions: #"+Str$(lp)+" processing time:"+Str$(timer()-t)
sync
next
print "done"
Sync
wait key
The same thing occurs in DBpro string functions, which have to screen the user input parameters, so you'll find similar types of slow downs when using
MID$(),
LEFT$(),
RIGHT$(),
Lower$(),
Upper$(),
String compares etc etc. Since they have to find the string length before doing anything with it. You can minimize the impact of this by splitting string processing tasks up into smaller strings (small strings ='s lower len() cost per operation)
If you had to say parse a TEXT / XML / HTML file or something then doing this in memblock would most likely give you better performance (assuming you can load the file to a block quickly). Alternative, if you can get a pointer to a string you can do the same thing really, but without the memblock container. Either way, it'd be quicker, just not as pleasant.