![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
От чего идет подвисание программы? Работаю с большой строкой
cukerMAN © (2009-11-20 17:07:00)Вот пример кода, это я формирую запросы в БД в виде текстового файла что бы потом на сайте импортировать. Обьем в стринге предположительно пару десятков гигов и где то в этом месте идет подвисание:
res.Text:=s+res.Text;
s:=res.Text;
Delete(s,length(s)-2,1);
res.Text:=s+';';
res.SaveToFile(extractfilepath(paramstr(0))+'DB.txt');
Что посоветуете сделать?
Ухарь (2009-11-21 11:08:00) [21]
> Мне интересно оно зависает на строковых функциях или же
> на попытке сохранить фаил??
это выясняется с помощью замеров, например GetTickCount после каждой операции и сравнение с начальным значением
Anatoly Podgoretsky (2009-11-20 18:53:00) [22]> cukerMAN (20.11.2009 17:59:07) [7]
Пока не сменишь алгоритмы, то будет хуже, как с этим предложением.
Не стоит надеяться на чудо.
Leonid Troyanovsky (2009-11-20 18:50:00) [23]
> cukerMAN (20.11.09 17:28) [4]
See TCopyParser also.
И букварь почитай, наконец.
--
Regards, LVT.
Leonid Troyanovsky (2009-11-20 18:46:00) [24]
> cukerMAN (20.11.09 17:59) [7]
> А в стринглист сколько может вместится?
2Гб.
А оперировать надо TFileStream, forever.
--
Regards, LVT.
cukerMAN (2009-11-20 17:59:00) [25]А в стринглист сколько может вместится? Может вместо s:string сделать s:TStringList и оперировать s.text?
Cobalt (2009-11-20 17:48:00) [26]Интересно, а вот замена
Delete(s,length(s)-2,1);
на
s[length(s)-2] := s[Length(s)];
SetLength(s, Length(s)-1);
даст какой-нить выигрыш?
*на больших строках, разумеется
clickmaker (2009-11-20 17:30:00) [27]> [4] cukerMAN (20.11.09 17:28)
да непонятно другое: откуда в стринге окажется 10 гигов, если приложению всего 2 доступно. И то при самом хорошем раскладе
cukerMAN (2009-11-20 17:28:00) [28]
> это AnsiString? Win32?
s:string;
res:TStringList;
Когда обьем текста не большой то в доли секунды все генерируется, если же гигабайты то вот в этом месте зависает ... Мне интересно оно зависает на строковых функциях или же на попытке сохранить фаил??
Leonid Troyanovsky (2009-11-20 17:13:00) [29]
> cukerMAN (20.11.09 17:07)
> файла что бы потом на сайте импортировать. Обьем в стринге
> предположительно пару десятков гигов и где то в этом месте
> идет подвисание:
Приложению доступно 2Гб, и это на все про все.
> Что посоветуете сделать?
Не работать с TMemo, особенно так: res.Text:=s+';';
а работать с файлами. TFileStream forever!
Ну, и букварь какой-нить почитать.
--
Regards, LVT.
clickmaker (2009-11-20 17:13:00) [30]> Обьем в стринге предположительно пару десятков гигов
это AnsiString? Win32?
Игорь Шевченко (2009-11-20 17:09:00) [31]
> Что посоветуете сделать?
Отладчик - наше все