Symptom
The performance gets low when adding strings in the loop statement. In the following case, time consumes up to 80 second.
string ls_output, ls_data="PB2017R3 Test Data "
long ll_loop, ll_cpu
ll_cpu = CPU ( )
FOR ll_loop = 1 to 100000
ls_output = ls_output + ls_data
NEXT
MessageBox ('', "BlobEdit time: " + String ( CPU() - ll_cpu, "#,##0" ) + "ms" )Environment
PowerBuilder 2017 or later
Cause
This is a PowerBuilder known issue, the performance of processing strings is low.
Solution
Solution #1: Use Blob to process strings. For example, the following code consumes only 1 second.
blob{100000} lblb_blob
string ls_output
long ll_loop, ll_pos = 2, ll_cpu
ll_cpu = CPU ( )
FOR ll_loop = 1 to 100000
ll_pos = BlobEdit (lblb_blob, ll_pos - 1, "PB2017R3 Test Data ", EncodingANSI!)
NEXT
ls_output = String (lblb_blob, EncodingANSI!)
MessageBox ( “”,"BlobEdit time: " + String ( CPU() - ll_cpu, "#,##0" ) + "ms" )Solution #2: Write an API with C++ to add strings together.


