El jueves, 26 de febrero de 2015, 10:53:51 (UTC-6), Tim Holy escribió: > > There's also a RopeString type. >
Nice! Though this seems to be under-documented (i.e., there is no documentation)? > --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 > >