Re: [PATCH] t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 08, 2021 at 10:30:09AM -0700, Junio C Hamano wrote:

> > There are cases it doesn't help, though. For instance, in one of the
> > scripts we measure the time to run "git repack -adb" to generate
> > bitmaps. But the first run has to do more work, because we can reuse
> > results for subsequent ones! It would help to "rm -f
> > objects/pack/*.bitmap", but even that's not entirely fair, as it will be
> > repacking from a single pack, versus whatever state we started with.
> 
> You need a "do this too for each iteration but do not time it", i.e.
> 
>     test_perf 'repack performance' --prepare '
> 	make a messy original repository
>     ' --per-iteration-prepare '
> 	prepare a test repository from the messy original
>     ' --time-this-part-only '
>         git repack -adb
>     '
> 
> Syntactically, eh, Yuck.

If any step doesn't need to be per-iteration, you can do it in a
separate test_expect_success block. So --prepare would always be
per-iteration, I think.

The tricky thing I meant to highlight in that example is that the
preparation step is non-obvious, since the timed command actually throws
away the original state. But we can probably stash away what we need.
With the test_perf_prepare I showed earlier, maybe:

  test_expect_success 'stash original state' '
	cp -al objects objects.orig
  '

  test_perf_prepare 'set up original state' '
	rm -rf objects &&
	cp -al objects.orig objects
  '

  test_perf 'repack' '
	git repack -adb
  '

which is not too bad. Of course it is made a lot easier by my use of the
unportable "cp -l", but you get the general idea. ;) This is all a rough
sketch anyway, and not something I plan on working on anytime soon.

For Jeff's case, the preparation would hopefully just be some sequence
of reset/read-tree/etc to manipulate the index and working tree to the
original state.

-Peff



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux