tests/test-debug-revlog-stats.t
author Arseniy Alekseyev <aalekseyev@janestreet.com>
Thu, 21 Dec 2023 20:30:03 +0000
changeset 51396 3f37d80d3ab4
parent 50681 47b44d80d836
permissions -rw-r--r--
revlog: add a C implementation of `headrevsdiff` Python implementation of `headrevsdiff` can be very slow in the worst case compared with the `heads` computation it replaces, since the latter is done in C. Even the average case of this Python implementation is still noticeable in the profiles. This patch makes the computation much much faster by doing it in C.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49819
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     1
Force revlog max inline value to be smaller than default
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     2
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     3
  $ mkdir $TESTTMP/ext
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     4
  $ cat << EOF > $TESTTMP/ext/small_inline.py
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     5
  > from mercurial import revlog
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     6
  > revlog._maxinline = 8
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     7
  > EOF
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     8
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     9
  $ cat << EOF >> $HGRCPATH
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    10
  > [extensions]
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    11
  > small_inline=$TESTTMP/ext/small_inline.py
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    12
  > EOF
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    13
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    14
  $ hg init repo
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    15
  $ cd repo
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    16
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    17
Try on an empty repository
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    18
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    19
  $ hg debug-revlog-stats
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    20
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    21
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    22
  $ mkdir folder
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    23
  $ touch a b folder/c folder/d
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    24
  $ hg commit -Aqm 0
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    25
  $ echo "text" > a
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    26
  $ hg rm b
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    27
  $ echo "longer string" > folder/d
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    28
  $ hg commit -Aqm 1
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    29
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    30
Differences in data size observed with pure is due to different compression
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    31
algorithms
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    32
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    33
  $ hg debug-revlog-stats
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    34
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    35
          2         138 no  changelog  (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    36
          2         137 no  changelog  (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    37
          2         177 no  manifest   (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    38
          2         168 no  manifest   (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    39
          2           6 yes file      a
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    40
          1           0 yes file      b
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    41
          1           0 yes file      folder/c
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    42
          2          15 no  file      folder/d
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    43
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    44
Test 'changelog' command argument
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    45
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    46
  $ hg debug-revlog-stats -c
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    47
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    48
          2         138 no  changelog  (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    49
          2         137 no  changelog  (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    50
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    51
Test 'manifest' command argument
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    52
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    53
  $ hg debug-revlog-stats -m
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    54
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    55
          2         177 no  manifest   (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    56
          2         168 no  manifest   (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    57
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    58
Test 'file' command argument
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    59
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    60
  $ hg debug-revlog-stats -f
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    61
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    62
          2           6 yes file      a
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    63
          1           0 yes file      b
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    64
          1           0 yes file      folder/c
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    65
          2          15 no  file      folder/d
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    66
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    67
Test multiple command arguments
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    68
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    69
  $ hg debug-revlog-stats -cm
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    70
  rev-count   data-size inl type      target 
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    71
          2         138 no  changelog  (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    72
          2         137 no  changelog  (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    73
          2         177 no  manifest   (no-pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    74
          2         168 no  manifest   (pure !)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    75