diff --git a/python/dune/codegen/pdelab/geometry.py b/python/dune/codegen/pdelab/geometry.py
index d37a315f2926ffe2f914589925eb77eee9352d5e..c452075b49994277d374587151cd2622e8ce020d 100644
--- a/python/dune/codegen/pdelab/geometry.py
+++ b/python/dune/codegen/pdelab/geometry.py
@@ -27,6 +27,8 @@ from loopy.match import Writes
 import numpy as np
 import pymbolic.primitives as prim
 
+from pytools import memoize
+
 
 @geometry_mixin("base")
 class GeometryMixinBase(object):
@@ -472,6 +474,7 @@ def name_in_cell_geometry(restriction):
     return name
 
 
+@memoize
 def world_dimension():
     data = get_global_context_value("data")
     form = data.object_by_name[get_form_option("form")]