Vergleiche und Bedingungen

Bedingungen und Vergleiche können beschleunigt werden, indem man den Compiler durch eigene Überlegungen zum Programmablauf unterstützt. Bei AND bspw. muss der Compiler die angegebenen einzelnen Ausdrücke allesamt ausführen, damit er prüfen kann ob alle die geforderte Bedingung erfüllen. Dies deshalb, weil er keinen Überblick über die Programmlogik besitzt und nicht wissen kann ob der Programmierer in seiner Bedingung tatsächlich eine Bitverknüpfung vornimmt oder nur eine logische Abfrage.

Um den Compiler zu unterstützen kann man komplexere logische Bedingungen aufteilen. Dies erzeugt zwar möglicherweise etwas mehr Code, ist jedoch dann in der Ausführungsgeschwindigkeit wesentlich schneller.

Vorher

if a=1 and b=getByte() and (c or d) then
  [..]
end if

Nachher

if a=1 then
  if b=getByte() then
    if c or d then
      [..]
    end if
  end if
end if

Bei Mehrfachvergleichen mit Konstanten ist es schneller und effizienter, wenn man möglichst immer eine select-case-Fallabfrage nutzt.

Vorher

if a=1 or a=3 or a=200 or (a>=210 and a<=220) then
  [..]
else
  [..]
end if

Nachher

select case a
case 1,3,200,210 to 220
  [..]
default
  [..]
end select