Меня интересует профилирование функции grep_source_is_binary()
[1], код которой выглядит следующим образом:
static int grep_source_is_binary(struct grep_source *gs,
struct index_state *istate)
{
grep_source_load_driver(gs, istate);
if (gs->driver->binary != -1)
return gs->driver->binary;
if (!grep_source_load(gs))
return buffer_is_binary(gs->buf, gs->size);
return 0;
}
График вызовов gprof дает мне эту информацию:
0.00 1.58 304254/304254 grep_source_1 [6]
[7] 72.9 0.00 1.58 304254 grep_source_is_binary [7]
0.01 1.20 304254/304254 show_line_header [8]
0.00 0.37 303314/607568 grep_source_load [15]
Это кажется мне странным, поскольку show_line_header()
не вызывается ни grep_source_binary()
, ни его детьми.Я неправильно понимаю вывод gprof?
[1]: на https://github.com/git/git/blob/master/grep.c#L2183