Mercurial > hg
view contrib/chg/Makefile @ 40374:47c03042cd1d
branchmap: pass changelog into branchmap functions
As part of building the branchmap, we loop over revs and call branchmap()
or _branchmap(). Previously, these functions were accessing repo.changelog.
We know from past experience that repo.changelog in loops is bad for
performance.
This commit teaches the branchmap code to pass a changelog instance into
branchmap() and _branchmap() so we don't need to pay this penalty.
On my MBP, this appears to show a speedup on a clone of the
mozilla-unified repo:
$ hg perfbranchmap --clear-revbranch
! base
! wall 21.078160 comb 21.070000 user 20.920000 sys 0.150000 (best of 3)
! wall 20.574682 comb 20.560000 user 20.400000 sys 0.160000 (best of 3)
$ hg perfbranchmap
! base
! wall 4.880413 comb 4.870000 user 4.860000 sys 0.010000 (best of 3)
! wall 4.573968 comb 4.560000 user 4.550000 sys 0.010000 (best of 3)
Differential Revision: https://phab.mercurial-scm.org/D5161
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 19 Oct 2018 16:16:17 +0200 |
parents | 01c57eeb35cb |
children | 4c8d9b53b1c7 |
line wrap: on
line source
TARGET = chg SRCS = chg.c hgclient.c procutil.c util.c OBJS = $(SRCS:.c=.o) CFLAGS ?= -O2 -Wall -Wextra -pedantic -g CPPFLAGS ?= -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE override CFLAGS += -std=gnu99 ifdef HGPATH override CPPFLAGS += -DHGPATH=\"$(HGPATH)\" endif DESTDIR = PREFIX = /usr/local MANDIR = $(PREFIX)/share/man/man1 .PHONY: all all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) chg.o: hgclient.h procutil.h util.h hgclient.o: hgclient.h procutil.h util.h procutil.o: procutil.h util.h util.o: util.h .PHONY: install install: $(TARGET) install -d "$(DESTDIR)$(PREFIX)"/bin install -m 755 "$(TARGET)" "$(DESTDIR)$(PREFIX)"/bin install -d "$(DESTDIR)$(MANDIR)" install -m 644 chg.1 "$(DESTDIR)$(MANDIR)" .PHONY: clean clean: $(RM) $(OBJS) .PHONY: distclean distclean: $(RM) $(OBJS) $(TARGET)