git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "erik elfström" <erik.elfstrom@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: "Torsten Bögershausen" <tboegi@web.de>, "Git List" <git@vger.kernel.org>
Subject: Re: [PATCH 2/3] p7300: added performance tests for clean
Date: Tue, 7 Apr 2015 21:35:07 +0200	[thread overview]
Message-ID: <CAMpP7NaKdArh_AA=9fSdWvEzk6MVyptX-y25_j665UA07xTiBQ@mail.gmail.com> (raw)
In-Reply-To: <CAPig+cRSv0qsctJ_2-ZH2y_E7kU_f787ate_5CnnKHE+vBddNw@mail.gmail.com>

Will fix!

Also I forgot to ask, does anyone have a good way of moving the copy
out of the performance timing?

After the fix this test spends more time copying than cleaning and
that is not so good. I'm not very good at shell scripting and the only
way I could think of was to make multiple copies at the start and then
in the test check and clean the first non empty directory. That feels
kind of ugly and will fail if a different number of iterations per
test is used. Any suggestions?

I looked a bit at the framework code but I couldn't figure out if it
was easy to add a "setup" option to be called be before each
iteration.

On Tue, Apr 7, 2015 at 12:09 AM, Eric Sunshine <sunshine@sunshineco.com> wrote:
> On Mon, Apr 6, 2015 at 4:40 PM, Torsten Bögershausen <tboegi@web.de> wrote:
>> On 2015-04-06 13.48, Erik Elfström wrote:
>>> Signed-off-by: Erik Elfström <erik.elfstrom@gmail.com>
>>> ---
>>> diff --git a/t/perf/p7300-clean.sh b/t/perf/p7300-clean.sh
>>> new file mode 100755
>>> index 0000000..3f56fb2
>>> --- /dev/null
>>> +++ b/t/perf/p7300-clean.sh
>>> @@ -0,0 +1,37 @@
>>> +#!/bin/sh
>>> +
>>> +test_description="Test git-clean performance"
>>> +
>>> +. ./perf-lib.sh
>>> +
>>> +test_perf_large_repo
>>> +test_checkout_worktree
>>> +
>>> +test_expect_success 'setup untracked directory with many sub dirs' '
>>> +     rm -rf 500_sub_dirs 50000_sub_dirs clean_test_dir &&
>>> +     mkdir 500_sub_dirs 50000_sub_dirs clean_test_dir &&
>>> +     for i in $(seq 1 500)
>> I think "seq" is bash-only, and can be easily replaced by "test_seq"
>
> test_seq is definitely desirable. 'seq' is not present on some systems I use.
>
>>
>>> +     do
>>> +             mkdir 500_sub_dirs/dir$i
>
> You may want:
>
>     mkdir 500_sub_dirs/dir$i || return $?
>
> to catch failure of 'mkdir'.
>
>>> +     done &&
>>> +     for i in $(seq 1 100)
>>> +     do
>>> +             cp -r 500_sub_dirs 50000_sub_dirs/dir$i
>
> Ditto:
>
>     cp -r 500_sub_dirs 50000_sub_dirs/dir$i || return $?
>
>>> +     done
>>> +'
>>> +
>>> +test_perf 'clean many untracked sub dirs, check for nested git' '
>>> +     rm -rf clean_test_dir/50000_sub_dirs_cpy &&
>>> +     cp -r 50000_sub_dirs clean_test_dir/50000_sub_dirs_cpy &&
>>> +     git clean -q -f -d  clean_test_dir/ &&
>>> +     test 0 = $(ls -A clean_test_dir/ | wc -l)
>>
>> Is the "ls -A" portable on all systems:
>> http://pubs.opengroup.org/onlinepubs/009695399/utilities/ls.html
>>
>> My feeling is that the "emptiness" of a directory can by tested by simply removing it:
>>> +     git clean -q -f -d  clean_test_dir/ &&
>>> +     rmdir clean_test_dir
>> (And similar below)
>
> There's also the test_dir_is_empty() function which makes the intent
> even clearer than 'rmdir'.

  reply	other threads:[~2015-04-07 19:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-06 11:48 [PATCH 0/3] Improving performance of git clean Erik Elfström
2015-04-06 11:48 ` [PATCH 1/3] t7300: add tests to document behavior of clean and nested git Erik Elfström
2015-04-06 22:06   ` Eric Sunshine
2015-04-07 19:27     ` erik elfström
2015-04-07 19:40   ` Eric Sunshine
2015-04-07 19:53     ` Torsten Bögershausen
2015-04-06 11:48 ` [PATCH 2/3] p7300: added performance tests for clean Erik Elfström
2015-04-06 20:40   ` Torsten Bögershausen
2015-04-06 22:09     ` Eric Sunshine
2015-04-07 19:35       ` erik elfström [this message]
2015-04-06 11:48 ` [PATCH 3/3] clean: improve performance when removing lots of directories Erik Elfström
2015-04-06 22:10   ` Eric Sunshine
2015-04-07 19:55     ` erik elfström
2015-04-08 21:29       ` Eric Sunshine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMpP7NaKdArh_AA=9fSdWvEzk6MVyptX-y25_j665UA07xTiBQ@mail.gmail.com' \
    --to=erik.elfstrom@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sunshine@sunshineco.com \
    --cc=tboegi@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).