From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: Tay Ray Chuan <rctay89@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH] Revert removal of multi-match discard heuristic in 27af01
Date: Sun, 25 Sep 2011 19:53:35 +0200 [thread overview]
Message-ID: <4E7F6A9F.6050501@lsrfire.ath.cx> (raw)
In-Reply-To: <1316957948-1908-1-git-send-email-rctay89@gmail.com>
Am 25.09.2011 15:39, schrieb Tay Ray Chuan:
> From: René Scharfe <rene.scharfe@lsrfire.ath.cx>
>
> 27af01d (xdiff/xprepare: improve O(n*m) performance in
> xdl_cleanup_records(), 2011-08-17) was supposed to be a performance
> boost only. However, it unexpectedly changed the behaviour of diff.
>
> Revert a part of 27af01d that removes logic that mark lines as
> "multi-match" (ie. dis[i] == 2). This was preventing the multi-match
> discard heuristic (performed in xdl_cleanup_records() and
> xdl_clean_mmatch()) from executing.
>
> Reported-by: Alexander Pepper <pepper@inf.fu-berlin.de>
> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
>
> ---
>
> Junio, this replaces the patch the one in the
> 'rs/diff-cleanup-records-fix' topic in 'pu'. The only difference is in
> the patch message.
>
> René, will need your SOB on this. Thanks for working to produce the
> patch. Please disregard my earlier message [1], further reading has
> shown my previous understanding to be wrong.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
>
> [1] <CALUzUxprUFGMR-WVEMOOvYiwkev1cfxHOyBmZq9bKJcHq5E2VA@mail.gmail.com>
> ---
> xdiff/xprepare.c | 10 +++++++---
> 1 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/xdiff/xprepare.c b/xdiff/xprepare.c
> index 05a8f01..4c447ca 100644
> --- a/xdiff/xprepare.c
> +++ b/xdiff/xprepare.c
> @@ -398,7 +398,7 @@ static int xdl_clean_mmatch(char const *dis, long i, long s, long e) {
> * might be potentially discarded if they happear in a run of discardable.
> */
> static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xdf2) {
> - long i, nm, nreff;
> + long i, nm, nreff, mlim;
> xrecord_t **recs;
> xdlclass_t *rcrec;
> char *dis, *dis1, *dis2;
> @@ -411,16 +411,20 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
> dis1 = dis;
> dis2 = dis1 + xdf1->nrec + 1;
>
> + if ((mlim = xdl_bogosqrt(xdf1->nrec)) > XDL_MAX_EQLIMIT)
> + mlim = XDL_MAX_EQLIMIT;
> for (i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart]; i <= xdf1->dend; i++, recs++) {
> rcrec = cf->rcrecs[(*recs)->ha];
> nm = rcrec ? rcrec->len2 : 0;
> - dis1[i] = (nm == 0) ? 0: 1;
> + dis1[i] = (nm == 0) ? 0: (nm >= mlim) ? 2: 1;
> }
>
> + if ((mlim = xdl_bogosqrt(xdf2->nrec)) > XDL_MAX_EQLIMIT)
> + mlim = XDL_MAX_EQLIMIT;
> for (i = xdf2->dstart, recs = &xdf2->recs[xdf2->dstart]; i <= xdf2->dend; i++, recs++) {
> rcrec = cf->rcrecs[(*recs)->ha];
> nm = rcrec ? rcrec->len1 : 0;
> - dis2[i] = (nm == 0) ? 0: 1;
> + dis2[i] = (nm == 0) ? 0: (nm >= mlim) ? 2: 1;
> }
>
> for (nreff = 0, i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart];
next prev parent reply other threads:[~2011-09-25 17:53 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-21 9:03 Bug: git log --numstat counts wrong Alexander Pepper
2011-09-21 12:24 ` Junio C Hamano
2011-09-21 13:40 ` Alexander Pepper
2011-09-21 14:23 ` Alexander Pepper
2011-09-21 20:35 ` Junio C Hamano
2011-09-22 13:19 ` Alexander Pepper
2011-09-22 17:32 ` Junio C Hamano
2011-09-22 16:15 ` René Scharfe
2011-09-23 6:30 ` Tay Ray Chuan
2011-09-25 13:39 ` [PATCH] Revert removal of multi-match discard heuristic in 27af01 Tay Ray Chuan
2011-09-25 17:53 ` René Scharfe [this message]
2011-09-22 17:51 ` Bug: git log --numstat counts wrong Junio C Hamano
2011-09-23 9:18 ` Tay Ray Chuan
2011-09-23 16:38 ` Tay Ray Chuan
2011-09-23 19:23 ` Junio C Hamano
2011-09-23 10:30 ` Alexander Pepper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E7F6A9F.6050501@lsrfire.ath.cx \
--to=rene.scharfe@lsrfire.ath.cx \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=rctay89@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).