perf machine: Use cached rbtrees
authorDavidlohr Bueso <dave@stgolabs.net>
Thu, 6 Dec 2018 19:18:14 +0000 (11:18 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 25 Jan 2019 14:12:09 +0000 (15:12 +0100)
commitf3acb3a8a2081344801974ac5ec8e1b0d6f0ef36
tree0bc3576849c9ff99905e7af40e9d5fb1bfa08249
parent3aef2cad5d51ee66d2a614dd2f70cb34c74caf77
perf machine: Use cached rbtrees

At the cost of an extra pointer, we can avoid the O(logN) cost of
finding the first element in the tree (smallest node), which is
something required for nearly every operation dealing with
machine->guests and threads->entries.

The conversion is straightforward, however, it's worth noticing that the
rb_erase_init() calls have been replaced by rb_erase_cached() which has
no _init() flavor, however, the node is explicitly cleared next anyway,
which was redundant until now.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20181206191819.30182-3-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-report.c
tools/perf/util/build-id.c
tools/perf/util/machine.c
tools/perf/util/machine.h
tools/perf/util/rb_resort.h