git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: how to benchmark git commands

From
Thomas Rast <trast@student.ethz.ch>
Date
Jun 21, 2012, 07:28 UTC
Message-ID
<87k3z1rumv.fsf@thomas.inf.ethz.ch>
In-Reply-To
<jrt88s$h70$1@dough.gmane.org>
Neal Kreitzinger <nkreitzinger@gmail.com> writes:
> I want to benchmark how long it takes commands like git-gc, git-fsck,
> etc. to run against our canonical repo.  What is the correct way to do
> this?  I am being asked how much time such commands would add to
> automated on-demand push scripts.
Umm, what's wrong with
$ time git fsck

The bigger question is: do you want to measure hot or cold performance? For most operations it is more useful to measure the hot performance, as the repo will be hot anyway. But in the fsck case I wouldn't be so sure; it's entirely possible that it "usually" faults a bunch of loose objects that were otherwise unused, taking some extra time. So there may be some value in first running (as root)

$ echo 3 >/proc/sys/vm/drop_caches
to get cold-cache measurements.

Besides, if you feel like properly evaluating performance in your repository, you can look in t/perf/README. Then point GIT_PERF_REPO at your repo of choice, and write tests as needed (for example, there is currently no perf test for fsck).

That said, both gc and fsck are so slow on even medium-size repositories (like git.git) that you should probably put them in a nightly cronjob instead.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: Neal Kreitzinger
Message 2 of 2 in “how to benchmark git commands”
  1. Neal KreitzingerJun 20, 2012
  2. Thomas RastJun 21, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.