Juniper/contrail-sandesh — pull request #24 by meghb (2014-02-22 04:21:50+00:00)
Title: Changes for flow message processing optimizations in collector:

1. Rewrite FlowTableInsert to traverse the flow message XML
tree only once and extract the needed fields into an
array. Use the array to populate the vectors needed to
populate the FlowRecordTable and the flow index tables.
2. Use the DbDataValueType type to encode the value into
string rather than using the column family name to determine
the type. This avoid 2 map lookups per field encoded.
Add a boost::blank as the first element of DbDataValueType
variant instead of std::string to determine if the variant
is populated or not.
3. Add a mock_generator in C++ which sends flow messages and
can be used to scale test vizd.
4. Use pugixml to decode the SandeshHeader and the sandesh
message in SandeshServer. Abstract out SandeshMessage
creation and parsing using SandeshMessageBuilder, change
vizd to use SandeshMessage.

With the above changes, we are able to increase vizd flow sandesh message
receive performance for 1 generator from around 1.5K msg/sec to
around 3.5K msg/sec using vizd built using compiler optimizations enabled -03
on single box setup - a6s23 - 4 core i3.