Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

Почему компонент созданный ран-тайм тормозит как чёрт знает что ?   Найти похожие ветки 

 
Алекс А   (2004-07-16 01:23) [0]

У меня СтрингГрид с возможностю сортировки по колонкам. Отображаться он не должен, поэтому я решил переделать программу, чтобы он создавался ран-тайм, работал, а потом удалялся. Всё работает, но тормозит жутко. Раз в сто наверное медленнее, чем должно. То, что раньше пролетало за секунду, теперь приходится ждать больше минуты. С чем это может быть связано, и как можно ускорить ?


 
NikB   (2004-07-16 01:43) [1]

(Извини отсъствие некоторьих символов)

Ран-тайм не имеет никакую связ с видимост или с скорост. Наверное у тебе стринг грид получился большой, но мне кажется, что вероятнее твоя програма не работает хорошо с памятью.
Проблема не в ран-тайм, не в стринг грид, буть уверен!

А как можно ускорит - ето интереснее. Например когда создаеш свой грид, создавай и что-то вроде индекс для каждой колоне. Тогда твой грид всегда будет сортиран по всех колон.


 
Алекс А   (2004-07-16 02:05) [2]


> Наверное у тебе стринг грид получился большой

Иногда маленький, иногда большой, иногда очень большой. Для того он и нужен. Когда я его просто кидаю на форму и работаю с ним, то всё быстро. А когда создаю, то тормозит. Почему ?


>  вероятнее твоя програма не работает хорошо с памятью.

А что сделать, чтобы она хорошо работала с памятью ?


> А как можно ускорит - ето интереснее. Например когда создаеш
> свой грид, создавай и что-то вроде индекс для каждой колоне.

Лишние действия - они лишние.


 
ЮЮ ©   (2004-07-16 03:10) [3]

>Когда я его просто кидаю на форму и работаю с ним, то всё быстро

Вот и кидай, а Visible поставь false.
P/S. довольно неразусно использовать визуальный объект исключмтельно для сортировки.


 
Алекс А   (2004-07-16 04:00) [4]


> ЮЮ ©   (16.07.04 03:10) [3]
> >Когда я его просто кидаю на форму и работаю с ним, то всё
> быстро
>
> Вот и кидай, а Visible поставь false.

Так и было раньше. Потом их стало два, потом три. Потом они мне надоели, и я решил сделать ран-тайм, а они торомозить начали. Почему ?


 
TUser ©   (2004-07-16 04:00) [5]


> Отображаться он не должен, поэтому я решил переделать программу, чтобы он создавался ран-тайм, работал, а потом удалялся.

Опиши свою задачу. Что-то не верится, что для чего-то может понадобится создавать невидимый грид. А чтобы было понятно, что тормозит - напиши здесь свой код.


 
Алекс А   (2004-07-16 04:31) [6]

StringAlignGrid21 := TStringAlignGrid.Create(Form1);
try
     StringAlignGrid21.Visible : False;
     StringAlignGrid21.ColCount  := 1;
     StringAlignGrid21.FixedCols := 0;
     StringAlignGrid21.FixedRows := 0;

     StringAlignGrid21.ResetAllColAll;
     StringAlignGrid21.RowCount := 0;
     StringAlignGrid21.ResetAllCellAll;

       repeat // В этом цикле тормоза.
...
         StringAlignGrid21.InsertRow(StringAlignGrid21.RowCount-1);
         StringAlignGrid21.Cells[0, StringAlignGrid21.RowCount-2] := s;
....
until ... ;

     StringAlignGrid21.SortColumn(0, True);

...

   finally
     StringAlignGrid21.Free;
   end;


 
TUser ©   (2004-07-16 04:37) [7]


> StringAlignGrid21.InsertRow(StringAlignGrid21.RowCount-1);

Ты просто пиши RowCount:=RowCount+1;
Да и вообще тут ты просто что-то сортируешь. Сделай массив рекордов и сортируй пузырьками/квиком/карманом/шелом/... по полю, которое ты заносишь в Columns[0]


 
Алекс А   (2004-07-16 04:47) [8]


> TUser ©   (16.07.04 04:37) [7]
>
> > StringAlignGrid21.InsertRow(StringAlignGrid21.RowCount-1);
>
> Ты просто пиши RowCount:=RowCount+1;
> Да и вообще тут ты просто что-то сортируешь. Сделай массив
> рекордов и сортируй пузырьками/квиком/карманом/шелом/...
> по полю, которое ты заносишь в Columns[0]


А как отлаживать массив не глядя ? Делаю как быстрее и удобнее.


 
TUser ©   (2004-07-16 04:56) [9]


> А как отлаживать массив не глядя

Ctrl+F7, Inspect, hints ect


 
ЮЮ ©   (2004-07-16 04:56) [10]

>А как отлаживать массив не глядя ?

Загнав в невидимый грид? :-)


 
Алекс А   (2004-07-16 04:59) [11]


> Ctrl+F7, Inspect, hints ect

Мне так неудобнее.


 
©   (2004-07-16 08:06) [12]

>repeat // В этом цикле тормоза.
...
        StringAlignGrid21.InsertRow(StringAlignGrid21.RowCount-1);
        StringAlignGrid21.Cells[0, StringAlignGrid21.RowCount-2] := s;
....
until ... ;


А что скрывается за ..., может тормоза именно там


 
Алекс А   (2004-07-17 01:13) [13]


> R ©   (16.07.04 08:06) [12]
> А что скрывается за ..., может тормоза именно там

Какая разница, если это и там и там одно и тоже ?
И что же там должно скрываться, чтобы возникли тормоза ?

В общем как я понял, никто не рубит в этой проблеме.


 
KilkennyCat ©   (2004-07-17 02:44) [14]


> В общем как я понял, никто не рубит в этой проблеме.


Не стал бы так категорично :)
Мастера наверняка знают.


 
Mim1 ©   (2004-07-17 06:09) [15]

procedure TForm1.Button1Click(Sender: TObject);
function CompareNames(Item1, Item2: Pointer): Integer;
begin
 Result := CompareText(TStringList(Item1)[1],TStringList(Item2)[1]);
end;
var sl:TStringList;
   i:integer;
begin
 with TObjectList.Create do
   try
     OwnsObjects := true;
     randomize;
     for i:= 0 to 9 do  // начало цикла
       begin
         sl:=tstringlist.create;
         sl.add(inttostr(random(9)));
         sl.add(inttostr(random(9)));
         sl.add(inttostr(random(9)));
         Add(sl);
       end;  // конец цикла наполняющего список
     Sort(@CompareNames);
     for i := 0 to count -1 do
       showmessage((items[i] as TStringList)[1]);
   finally
     free;
   end;
end;


 
TUser ©   (2004-07-17 07:10) [16]

Не знаю, что такое TStringAlignGrid, но метод InsertRow выглядит подозрительно в плане скорости.


 
Cobalt ©   (2004-07-17 09:33) [17]

2 Алекс А
может, попробовать использовать методы BeginUpdate/End Update?


 
KilkennyCat ©   (2004-07-17 12:21) [18]

Дело не в методах, вроде. Автор ветки же сказал, что в обоих вариантах методы одинаковые. За исключением создания.


 
Mim1 ©   (2004-07-18 22:59) [19]


> [16] TUser ©   (17.07.04 07:10)

Он там не присваивает parent так что скорее всего на отрисовку время не тратится. Там еще есть
>  StringAlignGrid21.Visible := False;
, :) , тока без парента эфекта с этого :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.068 c
1-1090416204
~ShamaN~
2004-07-21 17:23
2004.08.01
Quick Report


3-1089014270
Ky3bka
2004-07-05 11:57
2004.08.01
Двоеточие в удаленной процедуре


1-1090288396
НовиЧок
2004-07-20 05:53
2004.08.01
Манифест XP


3-1089020087
AlexanderSK
2004-07-05 13:34
2004.08.01
Получение списка таблиц и полей.


1-1090310634
888
2004-07-20 12:03
2004.08.01
progressbar.create





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский