[fpc-devel] Loop unrolling question

Benito van der Zander benito at benibela.de
Sun Aug 5 00:17:16 CEST 2018


Hi,

case of strings could also use some optimization

does it still call fpc_ansistr_compare_equal ?

fpc could hash the strings, or build a trie, even testing the length 
first would help


Cheers,
Benito



Am 03.08.2018 um 21:57 schrieb J. Gareth Moreton:
>   Hi everyone,
>
>   So I'm pondering about attempting to implement the binary search system I
> devised for case blocks.  To find the correct case label, you need to
> iterate a search loop a fixed maximum of ceil(log2(n)) times, where n is
> the number of individual case values (excluding "else").  Given that this
> is quite a low number and I managed to get the loop itself down to just 8
> instructions (not including the comparison and conditional jump at the
> end), this could be unwrapped for low values of ceil(log2(n))... possibly
> up to 7 or 8, I'd say.  However, if an exact match is found early, how
> serious is the penalty of having a conditional jump forward on each
> unrolled iteration for x86-64, whether it's taken or not? (This would be
> the equivalent of a Break command)
>
>   Gareth aka. Kit
>   
>
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180805/c3133a7a/attachment.html>


More information about the fpc-devel mailing list