The existing implementation uses a switch with many conditions, that when compiled is translated to a not optimal series of conditional jumps.
With a lookup table the generated code has less conditional jumps, that should translate in improving the CPU ability to predict the jumps. Performance Comparison: All the timings are in nanoseconds, "OVS Master" corresponds to 13a1d36. N is the number of repetitions Serialize vswitch.ovsschema N OVS Master Lookup Table Difference Diff per op 1 233182 200369 32813 32813 10 2724931 1919168 805763 80576.3 100 22802794 24406648 -1603854 -16038.54 1000 253645888 206259760 47386128 47386.128 10000 2352245703 1906839780 445405923 44540.5923 100000 23967770920 19012178655 4955592265 49555.92265 Serialize echo example N OVS Master Lookup Table Difference Diff per op 1 3857 12565 -8708 -8708 10 17403 7312 10091 1009.1 100 57859 56613 1246 12.46 1000 592310 528110 64200 64.2 10000 6096334 5576109 520225 52.0225 100000 60970439 58477626 2492813 24.92813 Serialize mutate example N OVS Master Lookup Table Difference Diff per op 1 7115 19051 -11936 -11936 10 34110 39561 -5451 -545.1 100 296613 298645 -2032 -20.32 1000 3510499 2930588 579911 579.911 10000 33898710 30278631 3620079 362.0079 100000 305069356 280622992 24446364 244.46364 Signed-off-by: Esteban Rodriguez Betancourt <esteb...@hpe.com> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev