On Sun, Jul 19, 2020 at 11:14 AM Jiri Olsa <jo...@kernel.org> wrote: > > There's no need to iterate the whole list of groups, > when adding new events. The currently created groups > are the ones we want to add. > > Signed-off-by: Jiri Olsa <jo...@kernel.org>
Acked-by: Ian Rogers <irog...@google.com> Thanks, Ian > --- > tools/perf/util/metricgroup.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c > index bb5757b9419d..332414d93f7a 100644 > --- a/tools/perf/util/metricgroup.c > +++ b/tools/perf/util/metricgroup.c > @@ -813,6 +813,7 @@ static int metricgroup__add_metric(const char *metric, > bool metric_no_group, > { > struct pmu_event *pe; > struct egroup *eg; > + LIST_HEAD(list); > int i, ret; > bool has_match = false; > > @@ -820,7 +821,7 @@ static int metricgroup__add_metric(const char *metric, > bool metric_no_group, > has_match = true; > eg = NULL; > > - ret = add_metric(group_list, pe, metric_no_group, &eg); > + ret = add_metric(&list, pe, metric_no_group, &eg); > if (ret) > return ret; > > @@ -829,7 +830,7 @@ static int metricgroup__add_metric(const char *metric, > bool metric_no_group, > * included in the expression. > */ > ret = resolve_metric(eg, metric_no_group, > - group_list, map); > + &list, map); > if (ret) > return ret; > } > @@ -838,7 +839,7 @@ static int metricgroup__add_metric(const char *metric, > bool metric_no_group, > if (!has_match) > return -EINVAL; > > - list_for_each_entry(eg, group_list, nd) { > + list_for_each_entry(eg, &list, nd) { > if (events->len > 0) > strbuf_addf(events, ","); > > @@ -850,6 +851,8 @@ static int metricgroup__add_metric(const char *metric, > bool metric_no_group, > &eg->pctx); > } > } > + > + list_splice(&list, group_list); > return 0; > } > > -- > 2.25.4 >