diff --git a/predtuner/torchapp.py b/predtuner/torchapp.py
index fbd52b4fda9199b853db156a19e82e5b2d9de65b..cb4a0a78f6422ac2e0de5cd8c74fcfcf89aaa90b 100644
--- a/predtuner/torchapp.py
+++ b/predtuner/torchapp.py
@@ -123,16 +123,21 @@ class TorchApp(ModeledApp, abc.ABC):
     def empirical_measure_qos_perf(
         self, with_approxes: KnobsT, is_testset: bool
     ) -> Tuple[float, float]:
+        from time import time_ns
+
         dataloader = self.test_loader if is_testset else self.val_loader
         approxed = self._apply_knobs(with_approxes)
         qoses = []
+
+        time_begin = time_ns() / (10 ** 9)
         for inputs, targets in dataloader:
             inputs = move_to_device_recursively(inputs, self.device)
             targets = move_to_device_recursively(targets, self.device)
             outputs = approxed(inputs)
             qoses.append(self.tensor_to_qos(outputs, targets))
+        time_end = time_ns() / (10 ** 9)
         qos = self.combine_qos(np.array(qoses))
-        return float(qos), 0.0  # float64->float
+        return float(qos), time_end - time_begin  # float64->float
 
     def __repr__(self) -> str:
         class_name = self.__class__.__name__
@@ -161,7 +166,9 @@ class TorchApp(ModeledApp, abc.ABC):
             if last_baseline_knob is None:
                 last_baseline_knob = k
             else:
-                raise ValueError(f"Found more than 1 baseline knobs: {last_baseline_knob} and {k}")
+                raise ValueError(
+                    f"Found more than 1 baseline knobs: {last_baseline_knob} and {k}"
+                )
         if last_baseline_knob is None:
             knobs.add(BaselineKnob())
         return knobs