[Python-ideas] multiple objects handling
Peter V. Saveliev
peet at altlinux.ru
Fri Aug 12 22:49:14 CEST 2011
…
Hello!
I have a stream of objects, each of dictionary type. Actually, they
represent events and are emitted by an asynchronous thread.
Sample event:
{
'type': 'neigh',
'action': 'add',
'index': 2,
'dest': '10.1.0.1',
'lladdr': '0:2:b3:39:2e:4c',
'timestamp': 'Wed Aug 10 17:20:28 2011',
'probes': None,
'cacheinfo': None
}
I shoud take an action depending on event's 'type' (neigh[bor], link,
address, route etc.) and 'action' (add, del) items.
Now I see two ways:
* build a tree of «if/elif» statements within one function
* create a dictionary that points to different methods
The issue is that a method call is slower that jump within one function.
But a dictionary lookup is faster than «if/elif» statements (if I have a
lot of variants and do not want to rebuild B-like tree of «if»
statements by hands).
Is there a way to combine these methods? Can I create a dictionary of
jump instructions?
So far I see that JUMP_ABSOLUTE and JUMP_FORWARD take an integer as a
parameter. It is reasonable, 'cause it is faster for if/elif/for etc.
statements. And thus I can not use a dictionary to store offsets and
then use them for one JUMP instruction.
But can we have another separate codeop, e.g. something like
JUMP_BY_TOS, that takes offset (or absolute address) from the top of the
stack?
…
Yes, I understand that it seems like `goto` statement.
…
Anyway, it can significantly speed up any stream parsing.
…
Thanks.
--
Peter V. Saveliev
More information about the Python-ideas
mailing list