diff --git a/src/polystar/utils/time.py b/src/polystar/utils/time.py
index 8d2073f8f23654a93b881e0121d922e61a088e81..f855fe619704f2fa5e0d4529d91d66cabae73787 100644
--- a/src/polystar/utils/time.py
+++ b/src/polystar/utils/time.py
@@ -1,5 +1,18 @@
 from datetime import datetime
+from functools import wraps
+from typing import Callable
 
 
 def create_time_id() -> str:
     return datetime.now().strftime("%Y%m%d_%H%M%S")
+
+
+def time_it(f: Callable):
+    @wraps(f)
+    def _f(*args, **kwargs):
+        t = datetime.now()
+        rv = f(*args, **kwargs)
+        print(f"{f.__name__} took {datetime.now() - t}")
+        return rv
+
+    return _f