From: Jonathan Nieder Date: Fri, 26 Jul 2013 20:57:37 GMT Subject: Re: [PATCH] builtins: search builtin commands via binary search. Message-ID: <20130726205737.GI14690@google.com> In-Reply-To: <1374871850-24323-1-git-send-email-stefanbeller@googlemail.com> Hi, Stefan Beller wrote: > --- 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. */ [...] > @@ -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