Тайм код говорит о том, что оптимизация нужна здесь: (68% времени на эту операцию уходит):
Код:
markRez := 0;
if (invalidOld = 1) and (invalidNew = 0) then
begin
markRez := 1;
end;
if (invalidOld = 0) and (invalidNew = 1) then
begin
markRezInvalid := 1;
end;
Нужно заменить ваш блок на этот:
Код:
markRez := InvalidOld AND not invalidNew;
markRezInvalid := invalidNew AND not invalidOld;
Только они(markRez, markRezInvalid) тогда должны быть не 0 и 1 (int) а true и false (bool)
Я сомневаюсь, что Not нужен. На живом примере, через Debug нужно проверить значения переменных.
B уничтожить к чертям сдвоенные if'ы