Don't worry about the RopeString business. The IOBuffer way is better and RopeString may go away in the relatively near future.
On Thu, Feb 26, 2015 at 2:59 PM, Jerry Xiong <[email protected]> wrote: > Could you give a example code? > > > On Thursday, February 26, 2015 at 5:53:51 PM UTC+1, Tim Holy wrote: >> >> There's also a RopeString type. >> >> --Tim >> >> On Thursday, February 26, 2015 07:32:27 AM David P. Sanders wrote: >> > El jueves, 26 de febrero de 2015, 9:15:38 (UTC-6), Josh Langsfeld >> escribió: >> > > It's equivalent to str = str * "def". I believe that's the case for >> all >> > > +=, *=, etc operators and all types. >> > >> > That's correct. So the original code is O(n^2). A good way to do this >> is >> > using IOBuffer, as below. >> > >> > function concat1(N) >> > s="" >> > for i=1:N >> > s*=string(i) >> > end >> > s >> > end >> > >> > function concat2(N) >> > buf = IOBuffer() >> > for i=1:N >> > print(buf, string(i)) >> > end >> > takebuf_string(buf) >> > end >> > >> > # Compile the functions and check they give the same output: >> > N = 10 >> > println(concat1(N)) >> > println(concat2(N)) >> > >> > N = 10000 >> > @time concat1(N); >> > @time concat2(N); >> > >> > With N = 100000, concat2 is almost instantaneous, and I couldn't be >> > bothered to wait for concat1 to finish. >> > >> > David. >> > >> > > On Thursday, February 26, 2015 at 9:23:19 AM UTC-5, Jerry Xiong >> wrote: >> > >> Considering below code: >> > >> str="abc" >> > >> str*="def" >> > >> Is the new string "def" just be appended after the memory space of >> "abc", >> > >> or both strings were copied to a new momory space? Is str*="def" >> equal to >> > >> str=str*"def" and str="$(str)def" in speed and memory level? Is >> below >> > >> code >> > >> in O(n) or in O(n^2) speed? >> > >> >> > >> s="" >> > >> for i=1:10000 >> > >> >> > >> s*=string(i) >> > >> >> > >> end >> >>
