169 похожих чатов

Приветствую! Подскажите, сложение строк я правильно делаю? Нужно сложить строки,

чтобы получилось так:
ss := ss + s1;
Я делаю так:
SetLength(ss, Length(ss) + Length(s1));
Move(s1[1], ss[Length(ss)-Length(s1)], Length(s1));

8 ответов

14 просмотров
Meatbeat- Автор вопроса

долго работает

Meatbeat
долго работает

если одна строка - смысла нет, если много - считать общую длину и суммировать

program Project1; {$IFDEF FPC} {$ELSE} {$APPTYPE CONSOLE} {$ENDIF} uses SysUtils; const maxstrings=15000000; var TestData:array[0..maxstrings]of String; s:String; i,len:Integer; myTime:TDateTime; SB:TStringBuilder; begin myTime:=now; for i:=0 to high(TestData) do //setlength(TestData[i],11); TestData[i]:=inttostr(i); writeln(format('Generate strings %.4fsec',[(now-myTime)*10e4])); myTime:=now; len:=0; for i:=0 to high(TestData) do len:=len+length(TestData[i]); setlength(s,len); len:=1; for i:=0 to high(TestData) do begin Move(TestData[i][1],s[len],length(TestData[i])); len:=len+length(TestData[i]); end; //writeln(s); writeln(format('setlength and copy %.4fsec',[(now-myTime)*10e4])); myTime:=now; SB:=TStringBuilder.Create; for i:=0 to high(TestData) do SB.Append(TestData[i]); s:=SB.ToString; SB.Free; //writeln(s); writeln(format('TStringBuilder %.4fsec',[(now-myTime)*10e4])); myTime:=now; s:=''; for i:=0 to high(TestData) do s:=s+TestData[i]; //writeln(s); writeln(format('s:=s+TestData[i]; %.4fsec',[(now-myTime)*10e4])); readln; end.

Meatbeat- Автор вопроса
zamtmn
program Project1; {$IFDEF FPC} {$ELSE} {$APPTYPE...

с мувом быстрее всего

Meatbeat
с мувом быстрее всего

проморгал, для делфи наверно надо length(TestData[i])*sizeof(s[1])

поправь

zamtmn
поправь

Generate strings 0.5162sec setlength and copy 0.1944sec TStringBuilder 0.1273sec s:=s+TestData[i]; 0.3438sec

Viktor Akselrod 💻
Generate strings 0.5162sec setlength and copy 0.19...

высылай патч)) или пул реквест))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта