Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2018-08

Case block binary search proposal

2 messages · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

J. Gareth Moreton

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

Reply by email

J. Gareth Moreton

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"
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

Reply by email