[fpc-devel] Patch to speed up Uppercase/Lowercase functions

Florian Klaempfl F.Klaempfl at gmx.de
Fri Jun 10 23:33:38 CEST 2005


Joost van der Sluis wrote:

> Hi all,
> 
> I don't know if rtl-optimilisation patches have a large priority, 

It depends if someone does it ;)

> but
> nevertheless this patch improves the speed of the sysutils.uppercase and
> lowercase functions.

What about creating a table which does direct mapping? It's a lot faster.

> 
> 
> 
> ------------------------------------------------------------------------
> 
> Index: sysstr.inc
> ===================================================================
> --- sysstr.inc	(revision 372)
> +++ sysstr.inc	(working copy)
> @@ -67,11 +67,8 @@
>  var i: integer;
>  begin
>  result := S;
> -i := Length(S);
> -while i <> 0 do begin
> +for i := Length(S) downto 1 do
>     if (result[i] in ['a'..'z']) then result[i] := char(byte(result[i]) - 32);
> -   Dec(i);
> -   end;
>  end;
>  
>  {   LowerCase returns a copy of S where all uppercase characters ( from A to Z )
> @@ -81,11 +78,8 @@
>  var i: integer;
>  begin
>  result := S;
> -i := Length(result);
> -while i <> 0 do begin
> +for i := Length(S) downto 1 do
>     if (result[i] in ['A'..'Z']) then result[i] := char(byte(result[i]) + 32);
> -   dec(i);
> -   end;
>  end;
>  
>  {   CompareStr compares S1 and S2, the result is the based on
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel





More information about the fpc-devel mailing list