Показать сообщение отдельно
  #15  
Старый 24.03.2012, 14:01
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Зависит от того, как делали. Если использовали много IF-ов - то, скорее всего, просто выиграли в количестве вызовов функции fight, но проиграли в количестве действий внутри циклов (а if - относительно медленная вещь).
По поводу функции fight - да, параметров слишком много. Передача указателя на структуру по идеи ускорит работу в пару раз.
Потом, некоторые блоки условий можно сгруппировать. Например:
Код:
if (B1=1) and (B2i=1) then B2:=2
        else if (B1=2) and (B2i=1) then B2:=1
        else if (B1=3) and (B2i=1) then B2:=1
        else if (B1=4) and (B2i=1) then B2:=1
можно переделать так:
Код:
if (B2i=1) then 
begin
 if (B1=1) then 
     B2:=2
 else 
     B2:=1;
end;
И так далее. Можно использовать case B2i of.

UPD:
Более того, сейчас заметил, что весь код
Код:
        if (B1=1) and (B2i=1) then B2:=2
        else if (B1=2) and (B2i=1) then B2:=1
        else if (B1=3) and (B2i=1) then B2:=1
        else if (B1=4) and (B2i=1) then B2:=1
        else if (B1=1) and (B2i=2) then B2:=3
        else if (B1=2) and (B2i=2) then B2:=3
        else if (B1=3) and (B2i=2) then B2:=2
        else if (B1=4) and (B2i=2) then B2:=2
        else if (B1=1) and (B2i=3) then B2:=4
        else if (B1=2) and (B2i=3) then B2:=4
        else if (B1=3) and (B2i=3) then B2:=4
        else if (B1=4) and (B2i=3) then B2:=3;
можно переделать в
Код:
if (B1<=B2i) then 
    B2:=B2i+1
 else 
    B2:=B2i;
А таких блоков несколько.
И еще: я, конечно, в коде не разобрался особо, но уверен, что большинство IFов можно записать в циклы или сгруппировать друг с другом (хотя бы найти взаимоисключающие IFы в функции fight и поставить else), повысив читаемость кода и, возможно, увеличив скорость.

P.S. уже не по поводу оптимизации: через два месяца такие названия переменных вскроют мозг даже тому, кто этот код писал, не говоря уже о тех, кто пытается в нём разобраться. На будущее - лучше использовать более развёрнутые и осмысленные имена.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием