[fpc-pascal] Can FPC optimize: if (s[i]='a') or ...

wkitty42 at windstream.net wkitty42 at windstream.net
Mon Apr 15 03:35:43 CEST 2019


On 4/14/19 7:28 AM, Rainer Stratmann wrote:
> On Samstag, 13. April 2019 22:30:55 CEST Alexey Tor. wrote:
>> E.g. i have a loop which test each s[i] char for several cases: 'a',
>> 'b', 'c'.
>>
>> for i:= 1 to length(s) do
>>
>> if (s[i]='a') or (s[i]='b') or (s[i]='c') then ...
>>
>> Can FPC optimize it so it only reads s[i] once (to register), not 3 times?
> 
> You can optimise by yourself.
> 
> var
>   c : char;
>   l : longint;
> 
> begin
>   l := length( s );
>   for i := 1 to l do
>    c := s[ i ];
>    if ( c = 'a' ) or ( c = 'b' ) or ( c = 'c' ) then ...


this looks like it will read three times like the original instead of once like 
using the IN set operation... it is still stepping through each one of the 
comparison steps instead of just doing a set match...


-- 
  NOTE: No off-list assistance is given without prior approval.
        *Please keep mailing list traffic on the list unless*
        *a signed and pre-paid contract is in effect with us.*



More information about the fpc-pascal mailing list