[fpc-devel] Optimization theory

Martin fpc at mfriebe.de
Mon Jun 25 01:18:42 CEST 2018

On 24/06/2018 23:28, J. Gareth Moreton wrote:
> On paper, a binary search is the fastest method to locate a data 
> pointer associated with a key (in this case, an opcode).

Forgive me for stepping in, given that I hardly looked at your work, nor 
the particular part of fpc.
But the fastest way should be a hash look up (O(n) = 1)

I might have missed something, so maybe I am completely out of line....

You have an enum. This could be used as a hash key (no need to 
calculate, just take the raw value, and you have a perfect hash).

All you need to do is once build the hash table.
   lookup =  Array[tasmop] of CodePointer;
in unit initialization set the codepointer for the known opcodes.

Then you do not need to search. just
    codepointer := lookup[taicpu(p).opcode]

More information about the fpc-devel mailing list