Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 8613)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 8614)
@@ -1468,4 +1468,24 @@
     }
 
+    /**
+     * Computes the flags for a given OSM primitive.
+     * @param primitive The primititve to compute the flags for.
+     * @param checkOuterMember <code>true</code> if we should also add {@link #FLAG_OUTERMEMBER_OF_SELECTED}
+     * @return The flag.
+     */
+    public static int computeFlags(OsmPrimitive primitive, boolean checkOuterMember) {
+        if (primitive.isDisabled()) {
+            return FLAG_DISABLED;
+        } else if (primitive.isSelected()) {
+            return FLAG_SELECTED;
+        } else if (checkOuterMember && primitive.isOuterMemberOfSelected()) {
+            return FLAG_OUTERMEMBER_OF_SELECTED;
+        } else if (primitive.isMemberOfSelected()) {
+            return FLAG_MEMBER_OF_SELECTED;
+        } else {
+            return FLAG_NORMAL;
+        }
+    }
+
     private class ComputeStyleListWorker implements Callable<List<StyleRecord>>, Visitor {
         private final List<? extends OsmPrimitive> input;
@@ -1513,43 +1533,15 @@
         @Override
         public void visit(Node n) {
-            if (n.isDisabled()) {
-                add(n, FLAG_DISABLED);
-            } else if (n.isSelected()) {
-                add(n, FLAG_SELECTED);
-            } else if (n.isMemberOfSelected()) {
-                add(n, FLAG_MEMBER_OF_SELECTED);
-            } else {
-                add(n, FLAG_NORMAL);
-            }
+            add(n, computeFlags(n, false));
         }
 
         @Override
         public void visit(Way w) {
-            if (w.isDisabled()) {
-                add(w, FLAG_DISABLED);
-            } else if (w.isSelected()) {
-                add(w, FLAG_SELECTED);
-            } else if (w.isOuterMemberOfSelected()) {
-                add(w, FLAG_OUTERMEMBER_OF_SELECTED);
-            } else if (w.isMemberOfSelected()) {
-                add(w, FLAG_MEMBER_OF_SELECTED);
-            } else {
-                add(w, FLAG_NORMAL);
-            }
+            add(w, computeFlags(w, true));
         }
 
         @Override
         public void visit(Relation r) {
-            if (r.isDisabled()) {
-                add(r, FLAG_DISABLED);
-            } else if (r.isSelected()) {
-                add(r, FLAG_SELECTED);
-            } else if (r.isOuterMemberOfSelected()) {
-                add(r, FLAG_OUTERMEMBER_OF_SELECTED);
-            } else if (r.isMemberOfSelected()) {
-                add(r, FLAG_MEMBER_OF_SELECTED);
-            } else {
-                add(r, FLAG_NORMAL);
-            }
+            add(r, computeFlags(r, true));
         }
 
@@ -1631,4 +1623,5 @@
         BBox bbox = bounds.toBBox();
         getSettings(renderVirtualNodes);
+        boolean benchmark = Main.isTraceEnabled() || Main.pref.getBoolean("mappaint.render.benchmark", false);
 
         data.getReadLock().lock();
@@ -1637,5 +1630,5 @@
 
             long timeStart = 0, timePhase1 = 0, timeFinished;
-            if (Main.isTraceEnabled()) {
+            if (benchmark) {
                 timeStart = System.currentTimeMillis();
                 System.err.print("BENCHMARK: rendering ");
@@ -1658,5 +1651,5 @@
             helper.process(new CompositeList<>(nodes, ways));
 
-            if (Main.isTraceEnabled()) {
+            if (benchmark) {
                 timePhase1 = System.currentTimeMillis();
                 System.err.print("phase 1 (calculate styles): " + Utils.getDurationString(timePhase1 - timeStart));
@@ -1676,5 +1669,5 @@
             }
 
-            if (Main.isTraceEnabled()) {
+            if (benchmark) {
                 timeFinished = System.currentTimeMillis();
                 System.err.println("; phase 2 (draw): " + Utils.getDurationString(timeFinished - timePhase1) +
