Mercurial-2.6-rcの並列になったupdateを試す

多数のパフォーマンスチューニングを含むMercurial-2.6のリリース候補版がリリースされた。今回のリリースからhg updateの処理が並列化されるようになったので試してみた。

インストール

バージョンを指定してインストール。

% pip install -U mercurial==2.6-rc

hg updateの速度を見てみる

2.6からhg updateが並列で動くらしいのでrhodecodeのリポジトリで試してみる。

% hg clone https://bitbucket.org/marcinkuzminski/rhodecode
$ cd rhodecode
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  1.56s user 0.62s system 72% cpu 3.018 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.15s user 0.63s system 95% cpu 2.897 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.41s user 0.65s system 96% cpu 3.181 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.10s user 0.60s system 96% cpu 2.792 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.33s user 0.78s system 116% cpu 2.684 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.06s user 0.66s system 134% cpu 2.024 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.00s user 0.64s system 137% cpu 1.913 total
% hg up null > /dev/null; time (hg up default > /dev/null && hg up beta > /dev/null)
( hg up default > /dev/null && hg up beta > /dev/null; )  2.65s user 0.79s system 118% cpu 2.908 total

mercurial-2.6-rcのCPUの部分が100%を超えている。

  • 平均と差分
;; mercurial-2.5.4
(/ (+ 3.018 2.897 3.181 2.792) 4)
; => 2.972

;; mercurial-2.6-rc
(/ (+ 2.684 2.024 1.913 2.908) 4)
; => 2.38225

(- (/ (+ 3.018 2.897 3.181 2.792) 4) (/ (+ 2.684 2.024 1.913 2.908) 4))
; => 0.58975

この例だと、0.5秒ほど早くなっている。

(追記)注意点