Форум: "WinAPI";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизКак вычислять параллельно? Найти похожие ветки
← →
grisme © (2006-05-03 17:56) [0]Возникла проблема. Необходимо вычислить время большого числа итераций. Делал таймер так:
sec:=0;
timer1.enabled:=true;
for i:=1 to [...] do [...];
timer1.enabled:=false;
caption:=inttostr(sec);
{в коде OnTimer наращиваю sec}
Естесственно,seс выходит равный 0!..( Думаю,надо параллельный какой-нибудь процесс создать...Подскажите плиз как примерно это должно выглядеть...{пример был бы ОЧЕНЬ хорош}
← →
Eraser © (2006-05-03 18:06) [1]
> grisme © (03.05.06 17:56)
var
t1, t2: TDateTime;
...
t1 := now; // или GetTickCount
<интерации>
t2 := now; // или GetTickCount
t1 := t2 - t1;
ShowMessage(TimeToStr(t1)); // или любая другая ф-я форматирования даты.
← →
grisme © (2006-05-03 19:02) [2]Eraser
Пасиба огромное, сразу не дошло...:) А как все-таки(интереса ради) можно вычислять еще параллельно? Создавать отдельный поток?
← →
Eraser © (2006-05-03 19:10) [3]
> grisme © (03.05.06 19:02) [2]
можно.
сколько примерно времени длится вычисление?
← →
grisme © (2006-05-03 19:31) [4]примерно минуту.
← →
Eraser © (2006-05-03 20:00) [5]
> 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 20:52) [6]Спасибо, Eraser.;)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c