![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вычислять параллельно? [D7, Win95/98]
grisme © (2006-05-03 17:56:00)Возникла проблема. Необходимо вычислить время большого числа итераций. Делал таймер так:
sec:=0;
timer1.enabled:=true;
for i:=1 to [...] do [...];
timer1.enabled:=false;
caption:=inttostr(sec);
{в коде OnTimer наращиваю sec}
Естесственно,seс выходит равный 0!..( Думаю,надо параллельный какой-нибудь процесс создать...Подскажите плиз как примерно это должно выглядеть...{пример был бы ОЧЕНЬ хорош}
grisme (2006-05-03 20:52:00) [1]Спасибо, Eraser.;)
Eraser (2006-05-03 20:00:00) [2]
> grisme © (03.05.06 19:31) [4]
тогда лучше делать так - вычисления выполнять в доп. потоке, а время засекать обычным таймером с интервалом 1 сек.
var
i: Integer;
...
i := 0;
Timer1.Interval := 1000;
Timer1.Enabled := true;
<начало создание потока вычислений>
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(i);
label1.Сaption := 'Вычисления идут ' + inttostr(i) + ' секунд';
end;
не забыть отключить таймер после завершения работы доп. потока.
grisme (2006-05-03 19:31:00) [3]примерно минуту.
Eraser (2006-05-03 19:10:00) [4]
> grisme © (03.05.06 19:02) [2]
можно.
сколько примерно времени длится вычисление?
grisme (2006-05-03 19:02:00) [5]Eraser
Пасиба огромное, сразу не дошло...:) А как все-таки(интереса ради) можно вычислять еще параллельно? Создавать отдельный поток?
Eraser (2006-05-03 18:06:00) [6]
> grisme © (03.05.06 17:56)
var
t1, t2: TDateTime;
...
t1 := now; // или GetTickCount
<интерации>
t2 := now; // или GetTickCount
t1 := t2 - t1;
ShowMessage(TimeToStr(t1)); // или любая другая ф-я форматирования даты.