##// END OF EJS Templates
setdiscovery: precompute children revisions to avoid quadratic lookup...
setdiscovery: precompute children revisions to avoid quadratic lookup Moving away from dagutil a few commits ago introduced quadratic behavior when resolving children revisions during discovery. This commit introduces a precompute step of the children revisions to avoid the bad behavior. I believe the new code should have near identical performance to what dagutil was doing before. Behavior is still slightly different because we take into account filtered revisions. But this change was made when we moved off dagutil. I added a comment about multiple invocations of this function redundantly calculating the children revisions. I believe this potentially undesirable behavior was present when we used dagutil, as the call to inverse() previously in this function created a new object and required computing children on every invocation. I thought we should document the potential for a performance issue rather than let it go undocumented. Differential Revision: https://phab.mercurial-scm.org/D4326

File last commit:

r36781:90f8fe72 default
r39214:274acf37 default
Show More
xutils.h
39 lines | 1.3 KiB | text/x-c | CLexer
Jun Wu
xdiff: vendor xdiff library from git...
r36689 /*
* LibXDiff by Davide Libenzi ( File Differential Library )
* Copyright (C) 2003 Davide Libenzi
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see
* <http://www.gnu.org/licenses/>.
*
* Davide Libenzi <davidel@xmailserver.org>
*
*/
#if !defined(XUTILS_H)
#define XUTILS_H
Jun Wu
xdiff: replace {unsigned ,}long with {u,}int64_t...
r36840 int64_t xdl_bogosqrt(int64_t n);
int xdl_cha_init(chastore_t *cha, int64_t isize, int64_t icount);
Jun Wu
xdiff: vendor xdiff library from git...
r36689 void xdl_cha_free(chastore_t *cha);
void *xdl_cha_alloc(chastore_t *cha);
Jun Wu
xdiff: replace {unsigned ,}long with {u,}int64_t...
r36840 int64_t xdl_guess_lines(mmfile_t *mf, int64_t sample);
Jun Wu
xdiff: remove unused flags parameter...
r36841 int xdl_recmatch(const char *l1, int64_t s1, const char *l2, int64_t s2);
uint64_t xdl_hash_record(char const **data, char const *top);
Jun Wu
xdiff: use int64 for hash table size...
r36843 unsigned int xdl_hashbits(int64_t size);
Jun Wu
xdiff: vendor xdiff library from git...
r36689
#endif /* #if !defined(XUTILS_H) */