regexps.com
本章で arch アーカイブへのアクセス速度向上の技法を説明します.
多くのリビジョンを含む arch のバージョンを考えます:
mainline
--------
base-0
patch-1
....
patch-23
patch-24
patch-25
...
patch-42
(プリスティンキャッシュをローカルに持たない) 利用者が patch-42
リビジョンを get したいとします.
get は, まず base-0 リビジョンを取得してアンパックし,
そして, 順番に, 各 patch-<N> チェンジセットを取得して,
ツリーにそれら適用します。
適用する必要のあるチェンジセットのリストが長かったり,
それらの合計の大きさがツリー側に較べて大きいなら,
この get の実装は不必要に非効率です.
get の速度向上の一つの方法は
アーカイブのキャッシュリビジョン (archive caching revisions)
です.
これはアーカイブでいくつかのリビジョンの "pre-built" コピーを
格納することです.
例えば, 次のコマンドを考えます:
% tla cacherev -A lord@emf.net--2003-example \
hello-world--mainline--0.1--patch-40
これは, patch-40 リビジョンを構築し,
それを tar にまとめて, それのコピーを,
アーカイブの patch-40 デイレクトリに格納します.
続いて, patch-42 を get すると,
まず patch-40 リビジョンのキャッシュコピーを取得し, そして,
patch-41 と patch-42 のチェンジセットを取得して,
適用します: つまり, 40 個のチェンジセットを節約しました.
使用上の注意: この時、
どのリビジョンをキャッシュしどれをキャッシュしないかを決定するのはあなた次第です.
例えば, cron で特定のリビジョンを自動的にキャッシュしたり,
もしくは, 単に, get があまりにも遅いと気づいたときに
手動でリビジョンをキャッシュすることにしても良いでしょう.
将来は, 自動的にリビジョンをキャッシュするのためのよりよいサポートを
追加したいと思います.
regexps.com