Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

От чего идет подвисание программы? Работаю с большой строкой


Страницы:   1 2

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]


> Что посоветуете сделать?


Отладчик - наше все


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо