mirror of
https://github.com/git-for-windows/git.git
synced 2025-12-13 00:06:03 -06:00
Continually xreallocing and freeing the remainder member of struct xdiff_emit_state was a noticeable performance hit. Use a strbuf instead. This yields a decent performance improvement on "git blame" on certain repositories. For example, before this commit: $ time git blame -M -C -C -p --incremental server.c >/dev/null 101.52user 0.17system 1:41.73elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+39561minor)pagefaults 0swaps With this commit: $ time git blame -M -C -C -p --incremental server.c >/dev/null 80.38user 0.30system 1:20.81elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+50979minor)pagefaults 0swaps Signed-off-by: Brian Downing <bdowning@lavos.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
29 lines
840 B
C
29 lines
840 B
C
#ifndef XDIFF_INTERFACE_H
|
|
#define XDIFF_INTERFACE_H
|
|
|
|
#include "xdiff/xdiff.h"
|
|
#include "strbuf.h"
|
|
|
|
struct xdiff_emit_state;
|
|
|
|
typedef void (*xdiff_emit_consume_fn)(void *, char *, unsigned long);
|
|
|
|
struct xdiff_emit_state {
|
|
xdiff_emit_consume_fn consume;
|
|
struct strbuf remainder;
|
|
};
|
|
|
|
int xdi_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp, xdemitconf_t const *xecfg, xdemitcb_t *ecb);
|
|
int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
|
|
struct xdiff_emit_state *state, xpparam_t const *xpp,
|
|
xdemitconf_t const *xecfg, xdemitcb_t *xecb);
|
|
int parse_hunk_header(char *line, int len,
|
|
int *ob, int *on,
|
|
int *nb, int *nn);
|
|
int read_mmfile(mmfile_t *ptr, const char *filename);
|
|
int buffer_is_binary(const char *ptr, unsigned long size);
|
|
|
|
extern void xdiff_set_find_func(xdemitconf_t *xecfg, const char *line);
|
|
|
|
#endif
|