summaryrefslogtreecommitdiff
path: root/bin/analyze-kconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/analyze-kconfig.py')
-rwxr-xr-xbin/analyze-kconfig.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index be52752..55bf53b 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -12,6 +12,7 @@ import json
import kconfiglib
import logging
import os
+import time
import numpy as np
@@ -146,13 +147,6 @@ def main():
if args.show_nop_symbols:
show_nop_symbols(attributes)
- if args.sample_size:
- shuffled_data_indices = np.random.permutation(
- np.arange(len(attributes.data))
- )
- sample_indices = shuffled_data_indices[: args.sample_size]
- raise RuntimeError("Not Implemented")
-
observations = list()
for param, attr in attributes.data:
@@ -165,6 +159,14 @@ def main():
}
)
+ if args.sample_size:
+ shuffled_data_indices = np.random.permutation(np.arange(len(observations)))
+ sample_indices = shuffled_data_indices[: args.sample_size]
+ new_observations = list()
+ for sample_index in sample_indices:
+ new_observations.append(observations[sample_index])
+ observations = new_observations
+
if args.export_observations:
import lzma
@@ -205,6 +207,7 @@ def main():
else:
max_std = None
+ constructor_start = time.time()
model = AnalyticModel(
by_name,
parameter_names,
@@ -212,6 +215,7 @@ def main():
force_tree=args.force_tree,
max_std=max_std,
)
+ constructor_duration = time.time() - constructor_start
if args.cross_validate:
xv_method, xv_count = args.cross_validate.split(":")
@@ -237,7 +241,10 @@ def main():
else:
logging.warning(f"Skipping LUT model: {e}")
lut_model = None
+
+ fit_start_time = time.time()
param_model, param_info = model.get_fitted()
+ fit_duration = time.time() - fit_start_time
if xv_method == "montecarlo":
static_quality = xv.montecarlo(lambda m: m.get_static(), xv_count)
@@ -326,6 +333,8 @@ def main():
if args.export_dref:
dref.update(model.to_dref(static_quality, lut_quality, analytic_quality))
+ dref["constructor duration"] = (constructor_duration, r"\second")
+ dref["regression duration"] = (fit_duration, r"\second")
with open(args.export_dref, "w") as f:
for k, v in dref.items():
if type(v) is not tuple: