libsysprof-ui: ignore negative and 0 averages

This ensures that we only calculate averages for marks that have a valid
duration. We also need a new field for the number of averages we added
so that we don't skew the results.
This commit is contained in:
Christian Hergert
2019-05-17 09:59:34 -07:00
parent ed8e23f776
commit 16780fa765
2 changed files with 9 additions and 3 deletions

View File

@ -358,7 +358,12 @@ sysprof_capture_view_scan_worker (GTask *task,
if (mark->duration > mstat->max)
mstat->max = mark->duration;
mstat->avg += mark->duration;
if (mark->duration > 0)
{
mstat->avg += mark->duration;
mstat->avg_count++;
}
mstat->count++;
}
@ -395,8 +400,8 @@ sysprof_capture_view_scan_worker (GTask *task,
{
SysprofMarkStat *mstat = v;
if (mstat->count > 0 && mstat->avg > 0)
mstat->avg /= mstat->count;
if (mstat->avg_count > 0 && mstat->avg > 0)
mstat->avg /= mstat->avg_count;
#if 0
g_print ("%s: count=%ld avg=%ld min=%ld max=%ld\n",

View File

@ -32,6 +32,7 @@ typedef struct
gint64 max;
gint64 min;
gint64 avg;
guint64 avg_count;
} SysprofMarkStat;
SysprofMarkStat *_sysprof_mark_stat_new (const gchar *name);