Message annotation processing on received messages stages key names byte by byte into a flat buffer and then uses strcmp to check them.
Easy improvements are:
- Use name in raw buffer if it does not cross a buffer boundary
- If name crosses a boundary then use memmoves to get the name in chunks
- Check the name prefix only once and then check variable parts of name strings
- Don't create unnecessary qd_iterators and qd_parsed_fields
- Don't check names whose lengths differ from the given keys