1
0
Fork 0

Add memory performance tests

better_develop
Filippo Martini 4 years ago
parent 50140c367c
commit 56e9c5b847
  1. 31
      PyCTBN/tests/performance_comparisons.py

@ -3,6 +3,7 @@ import os
import glob import glob
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import networkx as nx
import timeit import timeit
import psutil import psutil
@ -21,6 +22,7 @@ class PerformanceComparisons(unittest.TestCase):
cls.s1 = None cls.s1 = None
cls.importer = None cls.importer = None
cls.original_algo = None cls.original_algo = None
cls.real_net_graph = None
cls.original_times = [] cls.original_times = []
cls.optimized_times = [] cls.optimized_times = []
cls.results = [] cls.results = []
@ -45,11 +47,19 @@ class PerformanceComparisons(unittest.TestCase):
self.original_times.append(original_time) self.original_times.append(original_time)
self.optimized_times.append(opt_time) self.optimized_times.append(opt_time)
self.results.append((original_res, opt_res)) self.results.append((original_res, opt_res))
self.assertTrue(np.array_equal(original_res, opt_res)) try:
self.assertTrue(np.array_equal(original_res, opt_res))
except AssertionError:
self.real_net_graph = self.real_net_structure_builder()
original_algo_net_graph = self.build_graph_from_adj_matrix(original_res, self.s1.structure.nodes_labels)
original_spurius_edges = self.compute_edges_difference(self.real_net_graph, original_algo_net_graph)
opt_spurius_edges = self.compute_edges_difference(self.real_net_graph, se1._complete_graph)
self.assertLessEqual(opt_spurius_edges, original_spurius_edges)
continue
self.save_datas(self.original_times, self.optimized_times) self.save_datas(self.original_times, self.optimized_times)
self.original_times[:] = [] self.original_times[:] = []
self.optimized_times[:] = [] self.optimized_times[:] = []
"""
def test_memory_usage(self): def test_memory_usage(self):
for file_path in self.read_files: for file_path in self.read_files:
self.importer = JsonImporter(file_path, 'samples', 'dyn.str', 'variables', 'Time', 'Name') self.importer = JsonImporter(file_path, 'samples', 'dyn.str', 'variables', 'Time', 'Name')
@ -60,6 +70,7 @@ class PerformanceComparisons(unittest.TestCase):
mem = current_process.memory_info().rss mem = current_process.memory_info().rss
self.memory_usages.append((mem / 10 ** 6)) self.memory_usages.append((mem / 10 ** 6))
self.save_memory_usage_data(self.memory_usages) self.save_memory_usage_data(self.memory_usages)
"""
def aux_build_importer(self, indx): def aux_build_importer(self, indx):
self.importer.import_data(indx) self.importer.import_data(indx)
@ -94,5 +105,21 @@ class PerformanceComparisons(unittest.TestCase):
df_results.to_csv(file_dest, index=False) df_results.to_csv(file_dest, index=False)
def real_net_structure_builder(self):
graph = nx.DiGraph()
graph.add_nodes_from(self.s1.structure.nodes_labels)
graph.add_edges_from(self.s1.structure.edges)
return graph
def build_graph_from_adj_matrix(self, original_res, nodes_labels):
graph = nx.from_numpy_matrix(original_res, create_using=nx.DiGraph)
mapping = dict(zip(graph.nodes, nodes_labels))
graph = nx.relabel_nodes(graph, mapping)
return graph
def compute_edges_difference(self, g1, g2):
return len(nx.difference(g1, g2))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()