THRIFT-674. java: Generated read() should just switch directly on field.id

This patch gets rid of an unnecessary map lookup and null check in generated structs' read method, amounting a noticeable performance improvement.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@899721 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 28406d9..e2da877 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -1418,20 +1418,14 @@
       "}" << endl;
 
     // Switch statement on the field we are reading
-    indent(out) << "_Fields fieldId = _Fields.findByThriftId(field.id);" << endl;
-    indent(out) << "if (fieldId == null) {" << endl;
-    indent(out) << "  TProtocolUtil.skip(iprot, field.type);" << endl;
-    indent(out) << "} else {" << endl;
-    indent_up();
-
-    indent(out) << "switch (fieldId) {" << endl;
+    indent(out) << "switch (field.id) {" << endl;
 
     indent_up();
 
     // Generate deserialization code for known cases
     for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
       indent(out) <<
-        "case " << constant_name((*f_iter)->get_name()) << ":" << endl;
+        "case " << (*f_iter)->get_key() << ": // " << constant_name((*f_iter)->get_name()) << endl;
       indent_up();
       indent(out) <<
         "if (field.type == " << type_to_enum((*f_iter)->get_type()) << ") {" << endl;
@@ -1448,6 +1442,9 @@
       indent_down();
     }
 
+    indent(out) << "default:" << endl;
+    indent(out) << "  TProtocolUtil.skip(iprot, field.type);" << endl;
+
     indent_down();
     indent(out) << "}" << endl;
 
@@ -1455,8 +1452,6 @@
     indent(out) <<
       "iprot.readFieldEnd();" << endl;
 
-    scope_down(out);
-
     indent_down();
     indent(out) << "}" << endl;