Improved simple ser/deser perf tests to see if and how speed of field/accessor+mutator
methods differ.

diff --git a/src/perf/TestSerPerf.java b/src/perf/TestSerPerf.java
index 1fa77fc..4434e57 100644
--- a/src/perf/TestSerPerf.java
+++ b/src/perf/TestSerPerf.java
@@ -2,7 +2,6 @@
 
 import org.codehaus.jackson.*;
 import org.codehaus.jackson.map.*;
-import org.codehaus.jackson.util.BufferRecycler;
 
 public final class TestSerPerf
 {
@@ -12,7 +11,7 @@
     /////////////////////////////////////////////////////
      */
 
-    class NonFinalBean {
+    static class NonFinalBean {
         final NonFinalBean2 _bean = new NonFinalBean2();
 
         public NonFinalBean2 getBean() { return _bean; }
@@ -21,12 +20,12 @@
         public NonFinalBean2 getBean4() { return _bean; }
     }
 
-    class NonFinalBean2 {
+    static class NonFinalBean2 {
         public int getX() { return 3; }
         public String getName() { return "foobar"; }
     }
 
-    final class FinalBean {
+    final static class FinalBean {
         final FinalBean2 _bean = new FinalBean2();
 
         public FinalBean2 getBean() { return _bean; }
@@ -35,21 +34,36 @@
         public FinalBean2 getBean4() { return _bean; }
     }
 
-    final class FinalBean2 {
+    final static class FinalBean2 {
+        public int getX() { return 3; }
+        public String getName() { return "foobar"; }
+    }
+
+    final static class FinalFieldBean {
+        private final FinalFieldBean2 _bean = new FinalFieldBean2();
+
+        public FinalFieldBean2 fieldBean = _bean;
+        public FinalFieldBean2 fieldBean2 = _bean;
+        public FinalFieldBean2 fieldBean3 = _bean;
+        public FinalFieldBean2 fieldBean4 = _bean;
+    }
+
+    final static class FinalFieldBean2 {
         public int getX() { return 3; }
         public String getName() { return "foobar"; }
     }
 
     private final int REPS;
-
-    private final static int TEST_PER_GC = 15;
+    private final ObjectMapper _mapper;
 
     final Object _finalBean = new FinalBean();
+    final Object _finalFieldBean = new FinalFieldBean();
     final Object _nonFinalBean = new NonFinalBean();
 
     public TestSerPerf()
         throws Exception
     {
+        _mapper = new ObjectMapper();
         // Let's try to guestimate suitable size... to get to 50 megs processed
         REPS = 40000;
     }
@@ -64,11 +78,11 @@
 
         // Let's create tree from objects
         testObjectSer(_finalBean, 1, result);
-        final JsonNode _tree = new TreeMapper().readTree(result.toByteArray());
+        final JsonNode _tree = _mapper.readTree(new JsonFactory().createJsonParser(result.toByteArray()));
 
         while (true) {
             try {  Thread.sleep(100L); } catch (InterruptedException ie) { }
-            int round = (i++ % 3);
+            int round = (i++ % 4);
 
             long curr = System.currentTimeMillis();
             String msg;
@@ -77,14 +91,18 @@
             switch (round) {
 
             case 0:
-                msg = "Jackson, object, final";
+                msg = "Jackson, object+GET, final";
                 sum += testObjectSer(_finalBean, REPS, result);
                 break;
             case 1:
+                msg = "Jackson, object+Field, final";
+                sum += testObjectSer(_finalFieldBean, REPS, result);
+                break;
+            case 2:
                 msg = "Jackson, object, nonfinal";
                 sum += testObjectSer(_nonFinalBean, REPS, result);
                 break;
-            case 2:
+            case 3:
                 msg = "Jackson, tree";
                 sum += testTreeSer(_tree, REPS, result);
                 break;
@@ -98,37 +116,27 @@
             }
             System.out.println("Test '"+msg+"' -> "+curr+" msecs ("
                                +(sum & 0xFF)+").");
-
-
-            if ((i % TEST_PER_GC) == 0) {
-                System.out.println("[GC]");
-                try {  Thread.sleep(100L); } catch (InterruptedException ie) { }
-                System.gc();
-                try {  Thread.sleep(100L); } catch (InterruptedException ie) { }
-            }
         }
     }
 
     protected int testObjectSer(Object value, int reps, ByteArrayOutputStream result)
         throws Exception
     {
-        ObjectMapper mapper = new ObjectMapper();
         for (int i = 0; i < reps; ++i) {
             result.reset();
-            mapper.writeValue(result, value);
+            _mapper.writeValue(result, value);
         }
-        return mapper.hashCode(); // just to get some non-optimizable number
+        return _mapper.hashCode(); // just to get some non-optimizable number
     }
 
-    protected int testTreeSer(JsonNode value, int reps, ByteArrayOutputStream result)
+    protected int testTreeSer(JsonNode root, int reps, ByteArrayOutputStream result)
         throws Exception
     {
-        TreeMapper mapper = new TreeMapper();
         for (int i = 0; i < reps; ++i) {
             result.reset();
-            mapper.writeTree(value, result);
+            _mapper.writeValue(result, root);
         }
-        return mapper.hashCode(); // just to get some non-optimizable number
+        return _mapper.hashCode(); // just to get some non-optimizable number
     }
 
     public static void main(String[] args) throws Exception