В моей программе на Delphi есть несколько длинных, но простых циклов, которые могут повторяться миллионы раз и занять несколько секунд.Код внутри цикла очень быстрый и оптимизирован.Это занимает много времени, потому что это делается очень много раз.
Например:
Screen.Cursor = crHourGlass;
R := FirstRecord;
while R <> nil do begin
{ do something simple with R.Value }
R := R.NextRecord;
end;
Screen.Cursor := crDefault;
Теперь я не хочу, чтобы моя программа не отвечала, поэтому я хочу добавить приложение.ProcessMessages внутри цикла.Но я также хочу, чтобы добавленные операторы как можно меньше замедляли мой цикл.
Я слежу за связанным списком, поэтому у меня даже нет подсчитываемой переменной, и мне нужно было бы добавить ее, если бы я хотелинтервалы.Или я должен был бы добавить таймер, но нужно минимизировать проверку времени.
Как мне реализовать это, чтобы минимизировать добавленные накладные расходы?
Вывод:
Пока что я делаю что-то вроде ответа APZ28.
Но, похоже, в долгосрочной перспективе я должен реализовать какую-то многопоточность, чтобы справиться с этим.Спасибо за указание на это, потому что я думал, что Application.ProcessMessages - единственный способ сделать это.