perf help: Lower levenshtein penality for deleting character
authorIan Rogers <irogers@google.com>
Fri, 1 Mar 2024 20:13:06 +0000 (12:13 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 21 Mar 2024 16:54:40 +0000 (13:54 -0300)
The levenshtein penalty for deleting a character was far higher than
subsituting or inserting a character. Lower the penalty to match that
of inserting a character.

Before:

  $ perf recccord
  perf: 'recccord' is not a perf-command. See 'perf --help'.
  $

After:

  $ perf recccord
  perf: 'recccord' is not a perf-command. See 'perf --help'.

  Did you mean this?
          record
  $

Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240301201306.2680986-2-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/help-unknown-cmd.c

index 2ba3369f16207da08560b37aae508dbcbb9c0de9..a0a46e34f8d142a20faf90f33c3e9d991e880dc6 100644 (file)
@@ -73,10 +73,14 @@ const char *help_unknown_cmd(const char *cmd, struct cmdnames *main_cmds)
 
        if (main_cmds->cnt) {
                /* This reuses cmdname->len for similarity index */
-               for (i = 0; i < main_cmds->cnt; ++i)
+               for (i = 0; i < main_cmds->cnt; ++i) {
                        main_cmds->names[i]->len =
-                               levenshtein(cmd, main_cmds->names[i]->name, 0, 2, 1, 4);
-
+                               levenshtein(cmd, main_cmds->names[i]->name,
+                                       /*swap_penalty=*/0,
+                                       /*substition_penality=*/2,
+                                       /*insertion_penality=*/1,
+                                       /*deletion_penalty=*/1);
+               }
                qsort(main_cmds->names, main_cmds->cnt,
                      sizeof(*main_cmds->names), levenshtein_compare);