Re: [PATCH] builtins: search builtin commands via binary search.
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jul 26, 2013, 20:57 UTC
- Message-ID
- <20130726205737.GI14690@google.com>
- In-Reply-To
- <1374871850-24323-1-git-send-email-stefanbeller@googlemail.com>
Hi,
Stefan Beller wrote:
Show 9 quoted lines
> --- a/git.c
> +++ b/git.c
> @@ -309,9 +309,18 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
> return 0;
> }
>
> +static int compare_internal_command(const void *a, const void *b) {
> + /* The first parameter is of type char* describing the name,
> + the second is a struct cmd_struct */Style:
/* * Multi-line comments in git look like this, with an initial * "/*" line, a leading "*" on each line with text, and a line * with '*' '/' at the end. */
[...]
Show 11 quoted lines
> @@ -447,12 +456,12 @@ static void handle_internal_command(int argc, const char **argv)
> argv[0] = cmd = "help";
> }
>
> - for (i = 0; i < ARRAY_SIZE(commands); i++) {
> - struct cmd_struct *p = commands+i;
> - if (strcmp(p->cmd, cmd))
> - continue;
> + struct cmd_struct *p = (struct cmd_struct *)bsearch(cmd, commands,
> + ARRAY_SIZE(commands), sizeof(struct cmd_struct),
> + compare_internal_command);No need to cast --- this is C.
Fun. Does this result in a measurable speedup, or is it just for more pleasant reading?
Thanks and hope that helps, Jonathan