blob: 72e67f86df0509ec76b778172885653bf28f963e [file] [log] [blame]
import matplotlib.pyplot as plt
import pandas as pd
from .legend_picker import *
from .helpers import *
def show_memory_access(metricsParser, options, onePlotFigureSize, fontSize):
memoryEntries = metricsParser.get_memory_entries()
data = pd.DataFrame(memoryEntries, columns=['realTime', 'virtualTime', 'operation'])
reads = data[data['operation'] == bytes([2])]
writes = data[data['operation'] == bytes([3])]
fig, ax = plt.subplots(figsize=onePlotFigureSize, constrained_layout=True)
lines = _prepare_data(ax, reads, writes, 'realTime' if options.real_time else 'virtualTime')
fig.suptitle('Memory access', fontsize=fontSize)
handles, labels = ax.get_legend_handles_labels()
legend = fig.legend(handles, labels, loc='upper left')
set_legend_picker(fig, lines, legend)
ax.set_xlabel('{} time [ms]'.format('Real' if options.real_time else 'Virtual'))
save_fig(fig, 'memory.png', options)
def _prepare_data(ax, reads, writes, columnName):
writeLines, = ax.plot(writes[columnName], range(0, len(writes)), label='Writes')
readLines, = ax.plot(reads[columnName], range(0, len(reads)), label='Reads')
ax.set_ylabel('Memory access operations')
return [writeLines, readLines]