Быстрая конкатенация (суммирование) больших строк в Lazarus
Добавлено: 25.01.2013 20:37:23
Как известно огромные строки суммируются тем медленнее, чем они больше. Вот решение проблемы
- Код: Выделить всё
var
SumResultTableQuerySt: TStringStream;
length_str: longint;
SumResultTableQueryPosStr: int64;
begin
SumResultTableQuerySt := TStringStream.Create('');
SumResultTableQuerySt.Size := 50000000; //Обязательно, чтоб память заранее выделялась, иначе будет тормозить
SumResultTableQueryPosStr := 0;
// В цикле
temp_result := 'ttttttttt'
length_str := Length(temp_result);
SumResultTableQueryPosStr := SumResultTableQueryPosStr + length_str;
SumResultTableQuerySt.Position := SumResultTableQueryPosStr - length_str;
SumResultTableQuerySt.WriteString(temp_result);
// Получить результат
SumResultTableQuery := SumResultTableQuerySt.DataString;
И вуаля , можно складывать строки ограниченные только размером памяти