How to solve the low performance of processing strings

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.