Use StringStream to build large strings

If building strings, use a StringStream value to accumulate the string and then convert to a string.

Each string addition creates a new string.

FOR EXAMPLE:

   a ="AAA"
   b = a + a + a +a + a + a
   --Creates 6 strings of length 3, 6, 9, 12, 15, 18
   a ="AAA"
   b = (a + a + a) + (a + a + a)
   --Creates 6 strings of length 3, 6, 9, 6, 9, 18

TEST CASES:

   fn test5a =
   (
    local a =""
    for i = 1 to 100 do a += (i as string)
   )
   fn test5b =
   (
    local ss = stringstream""
    for i = 1 to 100 do format "%"(i as string) to:ss
    ss as string
   )
   fn test5c =
   (
    local ss = stringstream"",fmt ="%"
    for i= 1 to 100 do format fmt (i as string) to:ss
    ss as string
   )
   fn test5d =
   (
    local ss = stringstream"",fmt ="%"
    for i = 1 to 100 do format fmt ito:ss
    ss as string
   )

FOR 100,000 ITERATIONS:

   test5a()     -- 58875 msec., 505 MB
   test5b()     -- 54672 msec., 39.2 MB
   test5c()     -- 41125 msec., 29.2 MB
   test5d()     -- 13532 msec., 10.0 MB

Previous Tip

Do not use return, break, exit or continue

Next Tip

Use name values instead of strings when possible