Your Ad Here

Char Compare In Vs If

by: G.E. Ozz Nixon Jr.
Published: August 2009
Copyright 2009 by Friends of FPC

After doing the benchmark of For Loop "Up" vs "DownTo", I decided why not evaluate which is faster, testing a char using "in" versus two "if" statements. The results vary a lot depending upon Linux versus Mac.

Uses
   dxutil_environment;// contains TimeCounter for Windows, Linux and Mac

Var
   Loop:LongWord;
   StartTime:Comp;
   S,Result:AnsiString;
   Loop2:LongInt;

Begin
   S:='AbCdEfGhIjKlMnOpQrStUvWxYz';
   Writeln('Uppercase()');
   StartTime:=Trunc(TimeCounter);
   For Loop:=1 to 100000000 do begin
      Result:=S;
      for Loop2 := Length(Result) downto 1 do
         if Result[Loop2] in ['a'..'z'] then Dec(Result[Loop2], 32);
   end;
   System.Write('In ',Trunc(Trunc(TimeCounter)-StartTime));
   StartTime:=Trunc(TimeCounter);
   For Loop:=1 to 100000000 do begin
      Result:=S;
      for Loop2 := Length(Result) downto 1 do
         if (Ord(Result[Loop2])>=Ord('a')) and
            (Ord(Result[Loop2])<=Ord('z')) then Dec(Result[Loop2], 32);
   end;
   System.Writeln(' If ',Trunc(Trunc(TimeCounter)-StartTime));
end.

The results on Linux, In 38842 If 25977... show us that the "if" logic is a lot faster than using "in". Yet, the results on a Mac, In 29686 If 31833... show us that the "in" logic is a little faster than the "if" logic.

G.E. Ozz Nixon Jr.

These are popular related words: