Вы считаете, что для получения отчета о 56'000 транзакциях, генерирующих 224'000 строк (15MiB), требуется от 20 до 35 секунд. Я на самом деле думаю, что это довольно приличная производительность, но вы этого не делаете; Хорошо.
Поскольку вы генерируете отчет, используя постоянный формат из неизменной базы данных, вам нужно сделать это только один раз. После этого вы можете использовать кешированный результат git log
и пропустить время, требующее много времени. Например:
git log --pretty=format:%H\t%ae\t%an\t%at\t%s --numstat > log-pretty.txt
Вы можете задаться вопросом, сколько времени требуется для поиска всего отчета для данных, представляющих интерес. Это достойный вопрос:
$ tail -1 log-pretty.txt
30 0 railties/test/webrick_dispatcher_test.rb
$ time grep railties/test/webrick_dispatcher_test.rb log-pretty.txt
…
30 0 railties/test/webrick_dispatcher_test.rb
real 0m0.012s
…
Не плохо, введение «кэш» сократить время, необходимое от 35+ секунд до десятков миллисекунд. Это почти в 3000 раз быстрее.
Попробуйте '--max-count = 30' как [описано в документации git-log] (https://git-scm.com/docs/git-log). Вам действительно нужно увидеть все 56'000 коммитов для проекта рельсов? – msw
@msw для этого проекта, к сожалению, да. –