Tracing: CtfVisualizer: Add percentage of total time to statistics

Adds a column for the percentage of the time of an event to the total
measurement time in percent.

Change-Id: Ic3298b4ef6f34cb893edd987e645c7cfb67458b5
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Tim Henning
2019-10-17 17:08:08 +02:00
parent 1673e692c5
commit 8d91258cfa
3 changed files with 24 additions and 0 deletions

View File

@@ -58,6 +58,11 @@ void CtfStatisticsModel::addEvent(const QString &title, qint64 durationInNs)
}
}
void CtfStatisticsModel::setMeasurementDuration(qint64 timeInNs)
{
m_measurementDurationInNs = timeInNs;
}
void CtfStatisticsModel::endLoading()
{
endResetModel();
@@ -87,6 +92,7 @@ QVariant CtfStatisticsModel::data(const QModelIndex &index, int role) const
return Qt::AlignLeft;
case Column::Count:
case Column::TotalDuration:
case Column::RelativeDuration:
case Column::MinDuration:
case Column::AvgDuration:
case Column::MaxDuration:
@@ -103,6 +109,8 @@ QVariant CtfStatisticsModel::data(const QModelIndex &index, int role) const
return m_data.value(title).count;
case Column::TotalDuration:
return m_data.value(title).totalDuration;
case Column::RelativeDuration:
return m_data.value(title).totalDuration;
case Column::MinDuration:
{
auto minDuration = m_data.value(title).minDuration;
@@ -134,6 +142,16 @@ QVariant CtfStatisticsModel::data(const QModelIndex &index, int role) const
else
return "-";
}
case Column::RelativeDuration:
{
auto totalDuration = m_data.value(title).totalDuration;
if (m_measurementDurationInNs > 0 && totalDuration > 0) {
const double percent = (totalDuration / double(m_measurementDurationInNs)) * 100;
return QString("%1 %").arg(percent, 0, 'f', 2);
} else {
return "-";
}
}
case Column::MinDuration:
{
auto minDuration = m_data.value(title).minDuration;
@@ -175,6 +193,8 @@ QVariant CtfStatisticsModel::headerData(int section, Qt::Orientation orientation
return tr("Count");
case Column::TotalDuration:
return tr("Total Time");
case Column::RelativeDuration:
return tr("Percentage");
case Column::MinDuration:
return tr("Minimum Time");
case Column::AvgDuration: