• Karsten Blees's avatar
    trace: improve trace performance · 6aa30857
    Karsten Blees authored
    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: default avatarKarsten Blees <[email protected]>
    Signed-off-by: default avatarJunio C Hamano <[email protected]>
    6aa30857
trace.c 4.88 KB