Discussion:
Case block binary search proposal
(too old to reply)
J. Gareth Moreton
2018-08-05 13:38:15 UTC
Permalink
Hi everyone,

This one has been on my backburner for a while.  I spent the last few
days writing up some theory on the process, and feel this might be a good
optimisation for case blocks whose branches call identically-structured
functions, like in the peephole optimizer and the code formatter in Lazarus
(it hashes individual words then sends it through a large case block, where
a function then determines if it should be made bold or not).
I've written up my notes on the Wiki over here:
http://wiki.freepascal.org/Case_Compiler_Optimization [1] - I hope it's
explained clearly enough, including the requirements.  At the moment I'm
not personally working on it because I have to finish my work on pure
functions.  Still, how does the proposal look?

When I do write it, the peephole optimizer will be my main test case, as
it (currently) has 36 branches and I can test its speed and correctness
relatively easily.

Gareth aka. Kit


Links:
------
[1] http://wiki.freepascal.org/Case_Compiler_Optimization
J. Gareth Moreton
2018-08-05 16:17:48 UTC
Permalink
P.S. The Wiki topic isn't just for the binary search proposal, and can
easily be expanded for proposed and existing paradigms, and become an
advanced programming guide. For example, I would be grateful for
documentation on how the jump table system works.

Gareth aka. Kit

On Sun 05/08/18 14:38 , "J. Gareth Moreton" ***@moreton-family.com
sent:
Hi everyone,

This one has been on my backburner for a while.  I spent the last few
days writing up some theory on the process, and feel this might be a good
optimisation for case blocks whose branches call identically-structured
functions, like in the peephole optimizer and the code formatter in Lazarus
(it hashes individual words then sends it through a large case block, where
a function then determines if it should be made bold or not).
I've written up my notes on the Wiki over here:
http://wiki.freepascal.org/Case_Compiler_Optimization [1] - I hope it's
explained clearly enough, including the requirements.  At the moment I'm
not personally working on it because I have to finish my work on pure
functions.  Still, how does the proposal look?

When I do write it, the peephole optimizer will be my main test case, as
it (currently) has 36 branches and I can test its speed and correctness
relatively easily.

Gareth aka. Kit
_______________________________________________
fpc-devel maillist - fpc-***@lists.freepascal.org [2]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
[3]">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel



Links:

Loading...