]> git.ipfire.org Git - thirdparty/git.git/commit - shallow.c
trace: improve trace performance
authorKarsten Blees <karsten.blees@gmail.com>
Sat, 12 Jul 2014 00:00:06 +0000 (02:00 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Jul 2014 04:24:23 +0000 (21:24 -0700)
commit6aa3085702cc7a436c12f4c4396958281df1da44
treea01c3df1a78b0db0334349156f1971b7eeb172b0
parent0d0424272f85afb5262613829cf1f48f994cebc7
trace: improve trace performance

The trace API currently rechecks the environment variable and reopens the
trace file on every API call. This has the ugly side effect that errors
(e.g. file cannot be opened, or the user specified a relative path) are
also reported on every call. Performance can be improved by about factor
three by remembering the environment state and keeping the file open.

Replace the 'const char *key' parameter in the API with a pointer to a
'struct trace_key' that bundles the environment variable name with
additional, trace-internal state. Change the call sites of these APIs to
use a static 'struct trace_key' instead of a string constant.

In trace.c::get_trace_fd(), save and reuse the file descriptor in 'struct
trace_key'.

Add a 'trace_disable()' API, so that packet_trace() can cleanly disable
tracing when it encounters packed data (instead of using unsetenv()).

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
commit.h
pkt-line.c
shallow.c
trace.c
trace.h