• Ian Rogers's avatar
    perf symbol: Remove symbol_name_rb_node · 259dce91
    Ian Rogers authored
    Most perf commands want to sort symbols by name and this is done via
    an invasive rbtree that on 64-bit systems costs 24 bytes. Sorting the
    symbols in a DSO by name is optional and not done by default, however,
    if sorting is requested the 24 bytes is allocated for every
    symbol.
    
    This change removes the rbtree and uses a sorted array of symbol
    pointers instead (costing 8 bytes per symbol). As the array is created
    on demand then there are further memory savings. The complexity of
    sorting the array and using the rbtree are the same.
    
    To support going to the next symbol, the index of the current symbol
    needs to be passed around as a pair with the current symbol. This
    requires some API changes.
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Carsten Haitzler <carsten.haitzler@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Jason Wang <wangborong@cdjrlc.com>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/20230623054520.4118442-3-irogers@google.com
    [ minimize change in symbols__sort_by_name() ]
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    259dce91
symbol.c 64.4 KB