perf hist: Improve srcfile sort key performance (really)

Message ID 20230323025005.191239-1-namhyung@kernel.org
State New
Headers
Series perf hist: Improve srcfile sort key performance (really) |

Commit Message

Namhyung Kim March 23, 2023, 2:50 a.m. UTC
  The earlier commit f0cdde28fecc ("perf hist: Improve srcfile sort key
performance") updated the srcfile logic but missed to change the ->cmp()
callback which is called for every sample.  It should use the same logic
like in the srcline to speed up the processing because it'd return the
same information repeatedly for the same address.  The real processing
will be done in sort__srcfile_collapse().

Fixes: pf0cdde28fecc ("perf hist: Improve srcfile sort key performance")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/util/sort.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
  

Comments

Arnaldo Carvalho de Melo March 23, 2023, 12:54 p.m. UTC | #1
Em Wed, Mar 22, 2023 at 07:50:05PM -0700, Namhyung Kim escreveu:
> The earlier commit f0cdde28fecc ("perf hist: Improve srcfile sort key
> performance") updated the srcfile logic but missed to change the ->cmp()
> callback which is called for every sample.  It should use the same logic
> like in the srcline to speed up the processing because it'd return the
> same information repeatedly for the same address.  The real processing
> will be done in sort__srcfile_collapse().

Thanks, applied.

- Arnaldo

 
> Fixes: pf0cdde28fecc ("perf hist: Improve srcfile sort key performance")
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/util/sort.c | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
> index e11e68ecf0a2..2b5cc8e4aa6e 100644
> --- a/tools/perf/util/sort.c
> +++ b/tools/perf/util/sort.c
> @@ -657,12 +657,7 @@ static char *hist_entry__get_srcfile(struct hist_entry *e)
>  static int64_t
>  sort__srcfile_cmp(struct hist_entry *left, struct hist_entry *right)
>  {
> -	if (!left->srcfile)
> -		left->srcfile = hist_entry__get_srcfile(left);
> -	if (!right->srcfile)
> -		right->srcfile = hist_entry__get_srcfile(right);
> -
> -	return strcmp(right->srcfile, left->srcfile);
> +	return sort__srcline_cmp(left, right);
>  }
>  
>  static int64_t
> -- 
> 2.40.0.rc1.284.g88254d51c5-goog
>
  

Patch

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index e11e68ecf0a2..2b5cc8e4aa6e 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -657,12 +657,7 @@  static char *hist_entry__get_srcfile(struct hist_entry *e)
 static int64_t
 sort__srcfile_cmp(struct hist_entry *left, struct hist_entry *right)
 {
-	if (!left->srcfile)
-		left->srcfile = hist_entry__get_srcfile(left);
-	if (!right->srcfile)
-		right->srcfile = hist_entry__get_srcfile(right);
-
-	return strcmp(right->srcfile, left->srcfile);
+	return sort__srcline_cmp(left, right);
 }
 
 static int64_t