diff --git a/ipet/Key.py b/ipet/Key.py
index 9d9e393..c408435 100644
--- a/ipet/Key.py
+++ b/ipet/Key.py
@@ -49,11 +49,14 @@
GitHash = "GitHash"
LogFileName = "LogFileName"
LPSolver = "LPSolver"
+MeanFreq = "MeanFreq"
MetaData = "MetaData"
MaximumDepth = "MaxDepth"
Mode = "mode"
NodeName = "NodeName"
Nodes = "Nodes"
+NormalizedFreq = "NormalizedFreq"
+NormalizedTime = "NormalizedTime"
ObjectiveLimit = "Objlimit"
ObjectiveSense = "Objsense"
OptimalValue = "OptVal"
diff --git a/ipet/parsing/ReaderManager.py b/ipet/parsing/ReaderManager.py
index 5695f98..0a631a5 100644
--- a/ipet/parsing/ReaderManager.py
+++ b/ipet/parsing/ReaderManager.py
@@ -14,7 +14,8 @@
import xml.etree.ElementTree as ElementTree
from .StatisticReader import ErrorFileReader, GapReader, TimeLimitReader, ListReader, \
BestSolInfeasibleReader, MaxDepthReader, MetaDataReader, NodeNameReader, NodesReader, RootNodeFixingsReader, \
- SettingsFileReader, TimeToFirstReader, TimeToBestReader, ObjsenseReader, DateTimeReader, SolCheckerReader
+ SettingsFileReader, TimeToFirstReader, TimeToBestReader, ObjsenseReader, DateTimeReader, SolCheckerReader, \
+ PerfDataReader, RawPerfDataReader
from .StatisticReader_TableReader import TableReader, CustomTableReader
from .StatisticReader_VariableReader import VariableReader
from .StatisticReader_CustomReader import CustomReader
@@ -198,6 +199,8 @@ def registerDefaultReaders(self):
TimeLimitReader(),
TimeToFirstReader(),
TimeToBestReader(),
+ PerfDataReader(),
+ RawPerfDataReader(),
TraceFileReader()
])
diff --git a/ipet/parsing/StatisticReader.py b/ipet/parsing/StatisticReader.py
index 62281f8..579f658 100644
--- a/ipet/parsing/StatisticReader.py
+++ b/ipet/parsing/StatisticReader.py
@@ -428,6 +428,47 @@ def extractStatistic(self, line):
except TypeError:
pass
+class PerfDataReader(StatisticReader):
+ """
+ reads the processed perf statistics, like normalized solution time
+ """
+ name = 'PerfDataReader'
+ datatype = float
+ regular_expr = re.compile(r'^@10 meanfreq=([0-9\.]*) nmsfreq=([0-9\.]*) normtime=([0-9\.]*)$')
+ keys = [Key.MeanFreq, Key.NormalizedFreq, Key.NormalizedTime]
+
+ def extractStatistic(self, line):
+ m = self.regular_expr.match(line)
+ if m:
+ for keyidx in range(len(self.keys)):
+ try:
+ key = self.keys[keyidx]
+ value = float(m.group(keyidx+1))
+ self.addData(key, value)
+ except TypeError:
+ pass
+
+class RawPerfDataReader(StatisticReader):
+ """
+ reads the raw perf statistics, e.g., @06 cpu-cycles:u=13572052343862 cpu-cycles:k=68612735800 instructions:u=25079950435035 instructions:k=54294963792 cache-references:u=610557529359 cache-misses:u=320070506935 branch-instructions:u=3638145957323 branch-misses:u=36667745269 L1-dcache-loads=9147033741310 L1-dcache-load-misses=756723588525 L1-icache-load-misses=730865048 dTLB-loads=9147044559864 dTLB-load-misses=3092490807 iTLB-load-misses=4470770 minor-faults:u=10452738 minor-faults:k=86 major-faults:u=8 major-faults:k=0 context-switches=3217 cpu-migrations=94 cycle_activity.cycles_mem_any=13078074806121 cycle_activity.stalls_mem_any=4772553217683 cycle_activity.stalls_total=5226003573246 task-clock=7223006.36
+ """
+ name = 'RawPerfDataReader'
+ datatype = int
+ raw_regular_expr = re.compile(r'^@06 (.*)')
+
+ def extractStatistic(self, line):
+ m = self.raw_regular_expr.match(line)
+ if m:
+ for keyval in m.group(1).split() :
+ keyval = keyval.strip().split('=')
+ if len(keyval) == 2:
+ try:
+ key = 'perf:' + keyval[0].replace('_','-').replace('.','-')
+ value = int(float(keyval[1]))
+ self.addData(key, value)
+ except TypeError:
+ pass
+
class ListReader(StatisticReader):
"""
reads a list matching a regular expression
diff --git a/ipet/parsing/__init__.py b/ipet/parsing/__init__.py
index 15f03c2..6a6a6f0 100644
--- a/ipet/parsing/__init__.py
+++ b/ipet/parsing/__init__.py
@@ -17,5 +17,5 @@
from .StatisticReader_TableReader import TableReader, CustomTableReader
from .StatisticReader import StatisticReader, ErrorFileReader, GapReader, TimeLimitReader, \
BestSolInfeasibleReader, MaxDepthReader, MetaDataReader, ObjlimitReader, NodesReader, RootNodeFixingsReader, \
- SettingsFileReader, TimeToFirstReader, TimeToBestReader, ListReader, ObjsenseReader, DateTimeReader
+ SettingsFileReader, TimeToFirstReader, TimeToBestReader, PerfDataReader, RawPerfDataReader, ListReader, ObjsenseReader, DateTimeReader
__all__ = []
diff --git a/scripts/evaluation-perf.xml b/scripts/evaluation-perf.xml
new file mode 100644
index 0000000..1f22644
--- /dev/null
+++ b/scripts/evaluation-perf.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scripts/evaluation.xml b/scripts/evaluation.xml
index f2c5fae..712d69e 100644
--- a/scripts/evaluation.xml
+++ b/scripts/evaluation.xml
@@ -3,6 +3,9 @@
+
+
+