diff --git a/eval.py b/eval.py
index 71f20c4a48ebb33d9ec06f9a8dae1e29d826cdf8..a0629d4a2c2cc04e339ccae7e3cf55b6800f18f6 100755
--- a/eval.py
+++ b/eval.py
@@ -135,15 +135,17 @@ MEASURE_CMD = f'{PERF_EXE} stat -x; -e {PERF_EVENTS} -o {{RESULT_FILE_STEM}}.sta
 
 def perf_get_energy_events() -> str:
     """Return the energy events supported by this system"""
-    return ','.join([  # type: ignore
-        l.split()[0] for l in subprocess.check_output('perf list'.split(),
-                                                      text=True).splitlines()
-        if 'energy' in l
-    ])
+    if not perf_get_energy_events.events:  # type: ignore
+        perf_get_energy_events.events = ','.join([  # type: ignore
+            l.split()[0] for l in subprocess.check_output(
+                'perf list'.split(), text=True).splitlines() if 'energy' in l
+        ])
+    return perf_get_energy_events.events  # type: ignore
 
 
-MEASURE_ENERGY_CMD = (f'{PERF_EXE} stat -a -x; -e {perf_get_energy_events()}'
-                      ' -o {RESULT_FILE_STEM}.energy.stats')
+perf_get_energy_events.events = ''  # type: ignore
+
+MEASURE_ENERGY_CMD = f'{PERF_EXE} stat -a -x; -e {{ENERGY_EVENTS}} -o {{RESULT_FILE_STEM}}.energy.stats'
 
 CACHE_DROP_FILE = '/proc/sys/vm/drop_caches'
 
@@ -311,8 +313,10 @@ def main(args):
                                                  f'{target}.{run}.emper-stats')
             measure_energy_proc = None
             if args.measure_energy:
+                energy_events = perf_get_energy_events()
                 measure_energy_cmd = MEASURE_ENERGY_CMD.format(
-                    RESULT_FILE_STEM=result_file_stem)
+                    RESULT_FILE_STEM=result_file_stem,
+                    ENERGY_EVENTS=energy_events)
                 measure_energy_proc = subprocess.Popen(
                     measure_energy_cmd.split())