diff --git a/python/dune/perftool/pdelab/driver/timings.py b/python/dune/perftool/pdelab/driver/timings.py
index 4ba2d8318de885030240adabcf3e9e139bb20524..b8ebd5f32dd368dc23119388f352b25cff9575a0 100644
--- a/python/dune/perftool/pdelab/driver/timings.py
+++ b/python/dune/perftool/pdelab/driver/timings.py
@@ -44,12 +44,29 @@ def dump_dof_numbers(stream):
     include_file("dune/pdelab/common/partitionviewentityset.hh", filetag="driver")
     gvt = type_leafview()
     gv = name_leafview()
-    return ["Dune::PDELab::NonOverlappingEntitySet<{}> es({});".format(gvt, gv),
-            "{} << \"{} \" << {} << \" dofs dofs \" << {}.maxLocalSize() * es.size(0) << std::endl;".format(stream,
-                                                                                                            level,
-                                                                                                            ident,
-                                                                                                            name_trial_gfs())
-            ]
+
+    from dune.perftool.pdelab.driver import get_trial_element, isDG, _flatten_list
+    from ufl import MixedElement, TensorProductElement
+    element = get_trial_element()
+
+    def _apply_to_element(element, f):
+        if isinstance(element, MixedElement) or isinstance(element, TensorProductElement):
+            return tuple(_apply_to_element(e, f) for e in element.sub_elements())
+        else:
+            return f(element)
+    element_is_dg = all(_flatten_list(_apply_to_element(element, isDG)))
+
+    if element_is_dg:
+        return ["Dune::PDELab::NonOverlappingEntitySet<{}> es({});".format(gvt, gv),
+                "{} << \"{} \" << {} << \" dofs dofs \" << {}.maxLocalSize() * es.size(0) << std::endl;".format(stream,
+                                                                                                                level,
+                                                                                                                ident,
+                                                                                                                name_trial_gfs())
+                ]
+    else:
+        return ["{} << \"{} \" << {} << \" dofs dofs \" << {}.size() << std::endl;".format(stream, level, ident,
+                                                                                           name_trial_gfs())
+                ]
 
 
 @preamble(section="timings")