소스 검색

Add in time-monitoring of rule generation

Yentl Van Tendeloo 7 년 전
부모
커밋
11d4d9bfeb
1개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 1
      model/model.py

+ 9 - 1
model/model.py

@@ -1,4 +1,5 @@
 import sys
+import time
 sys.path.append("kernel/")
 sys.path.append("state/")
 sys.path.append("interface/HUTN")
@@ -142,6 +143,7 @@ class MvKState(object):
         self.loaded_primitives = False
         self.execution_counter = 0
         self.all_failed = True
+        self.rule_generation_time = 0.0
 
     def __str__(self):
         return "\nMvK: %s\n" % self.mvk + \
@@ -244,13 +246,19 @@ class ModelverseKernel(AtomicDEVS):
                     commands = None
 
             elif self.state.phase == "computation":
+                start = time.time()
                 try:
                     commands = self.state.mvk.execute_yields(self.state.current_task, "execute_rule", [], self.state.reply)
                 except SleepKernel:
                     commands = None
                     self.state.mvk.success = False
+                # TODO this should be sampled from a distribution!
+                self.state.rule_generation_time = time.time() - start
             elif self.state.phase == "output":
+                start = time.time()
                 commands = self.state.mvk.execute_yields(self.state.current_task, "get_output", [], self.state.reply)
+                # TODO this should be sampled from a distribution!
+                self.state.rule_generation_time = time.time() - start
             else:
                 raise Exception("Phase: " + str(self.state.phase))
 
@@ -299,7 +307,7 @@ class ModelverseKernel(AtomicDEVS):
             # Make this a parameter
             return 200
         if self.state.commands is not None:
-            return 0
+            return self.state.rule_generation_time
         elif self.state.waiting:
             return float("inf")
         elif self.state.mvk is None: