Re: [PATCH] xdiff: optimise for no whitespace difference when ignoring whitespace.
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- Jul 5, 2010, 08:34 UTC
- 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,"
Show 22 quoted lines
> 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 <dgreid@gmail.com>
> ---
> 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