From: Michael J Gruber Date: Mon, 05 Jul 2010 08:34:57 GMT Subject: Re: [PATCH] xdiff: optimise for no whitespace difference when ignoring whitespace. Message-ID: <4C319931.4020603@drmicha.warpmail.net> In-Reply-To: <1278310017-24299-1-git-send-email-dgreid@gmail.com> Dylan Reid venit, vidit, dixit 05.07.2010 08:06: > Invert the order of the memcmp and flag check are done in xdl_recmatch, I was wondering whether you describe old (before patch) or new (after patch) here. Maybe one of the following is clearer: "Invert the order of the memcmp and flag check which are done in xdl_recmatch," "Invert the order of the memcmp and flag check in xdl_recmatch," > as it makes the common case (there is no whitespace difference) faster. > It costs the case where lines are the same length and contain > whitespace differences, but the common case is more than 20% faster. > > Signed-off-by: Dylan Reid > --- > xdiff/xutils.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/xdiff/xutils.c b/xdiff/xutils.c > index bc12f29..dc97a21 100644 > --- a/xdiff/xutils.c > +++ b/xdiff/xutils.c > @@ -190,8 +190,10 @@ int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags) > { > int i1, i2; > > - if (!(flags & XDF_WHITESPACE_FLAGS)) > - return s1 == s2 && !memcmp(l1, l2, s1); > + if (s1 == s2 && !memcmp(l1, l2, s1)) > + return 1; > + else if (!(flags & XDF_WHITESPACE_FLAGS)) You can do without the "else" here. > + return 0; > > i1 = 0; > i2 = 0; BTW: How did you find this? Are you profiling parts of git? Michael