Mercurial > jhg
comparison cmdline/org/tmatesoft/hg/console/Main.java @ 254:a620f0663a37
Collect tags for a file - improve performance of 'sparse' manifest reads
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Tue, 16 Aug 2011 04:03:29 +0200 |
| parents | 1874d11054e5 |
| children | c6450b0b1fd5 |
comparison
equal
deleted
inserted
replaced
| 253:1874d11054e5 | 254:a620f0663a37 |
|---|---|
| 16 */ | 16 */ |
| 17 package org.tmatesoft.hg.console; | 17 package org.tmatesoft.hg.console; |
| 18 | 18 |
| 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
| 20 | 20 |
| 21 import java.io.File; | |
| 21 import java.util.ArrayList; | 22 import java.util.ArrayList; |
| 22 import java.util.Collections; | 23 import java.util.Collections; |
| 23 import java.util.List; | 24 import java.util.List; |
| 24 import java.util.Map; | 25 import java.util.Map; |
| 25 | 26 |
| 31 import org.tmatesoft.hg.core.HgManifestCommand; | 32 import org.tmatesoft.hg.core.HgManifestCommand; |
| 32 import org.tmatesoft.hg.core.Nodeid; | 33 import org.tmatesoft.hg.core.Nodeid; |
| 33 import org.tmatesoft.hg.internal.ByteArrayChannel; | 34 import org.tmatesoft.hg.internal.ByteArrayChannel; |
| 34 import org.tmatesoft.hg.internal.DigestHelper; | 35 import org.tmatesoft.hg.internal.DigestHelper; |
| 35 import org.tmatesoft.hg.internal.PathGlobMatcher; | 36 import org.tmatesoft.hg.internal.PathGlobMatcher; |
| 37 import org.tmatesoft.hg.internal.RelativePathRewrite; | |
| 36 import org.tmatesoft.hg.repo.HgBranches; | 38 import org.tmatesoft.hg.repo.HgBranches; |
| 37 import org.tmatesoft.hg.repo.HgChangelog; | 39 import org.tmatesoft.hg.repo.HgChangelog; |
| 38 import org.tmatesoft.hg.repo.HgDataFile; | 40 import org.tmatesoft.hg.repo.HgDataFile; |
| 39 import org.tmatesoft.hg.repo.HgInternals; | 41 import org.tmatesoft.hg.repo.HgInternals; |
| 40 import org.tmatesoft.hg.repo.HgManifest; | 42 import org.tmatesoft.hg.repo.HgManifest; |
| 44 import org.tmatesoft.hg.repo.HgStatusInspector; | 46 import org.tmatesoft.hg.repo.HgStatusInspector; |
| 45 import org.tmatesoft.hg.repo.HgSubrepoLocation; | 47 import org.tmatesoft.hg.repo.HgSubrepoLocation; |
| 46 import org.tmatesoft.hg.repo.HgSubrepoLocation.Kind; | 48 import org.tmatesoft.hg.repo.HgSubrepoLocation.Kind; |
| 47 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; | 49 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; |
| 48 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 50 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
| 51 import org.tmatesoft.hg.util.FileIterator; | |
| 52 import org.tmatesoft.hg.util.FileWalker; | |
| 49 import org.tmatesoft.hg.util.Pair; | 53 import org.tmatesoft.hg.util.Pair; |
| 50 import org.tmatesoft.hg.util.Path; | 54 import org.tmatesoft.hg.util.Path; |
| 55 import org.tmatesoft.hg.util.PathRewrite; | |
| 51 | 56 |
| 52 /** | 57 /** |
| 53 * Various debug dumps. | 58 * Various debug dumps. |
| 54 * | 59 * |
| 55 * @author Artem Tikhomirov | 60 * @author Artem Tikhomirov |
| 70 System.out.println("REPO:" + hgRepo.getLocation()); | 75 System.out.println("REPO:" + hgRepo.getLocation()); |
| 71 } | 76 } |
| 72 | 77 |
| 73 public static void main(String[] args) throws Exception { | 78 public static void main(String[] args) throws Exception { |
| 74 Main m = new Main(args); | 79 Main m = new Main(args); |
| 80 m.testTreeTraversal(); | |
| 75 // m.testRevisionMap(); | 81 // m.testRevisionMap(); |
| 76 // m.testSubrepos(); | 82 // m.testSubrepos(); |
| 77 // m.testReadWorkingCopy(); | 83 // m.testReadWorkingCopy(); |
| 78 m.testParents(); | 84 // m.testParents(); |
| 79 // m.testEffectiveFileLog(); | 85 // m.testEffectiveFileLog(); |
| 80 // m.testCatAtCsetRevision(); | 86 // m.testCatAtCsetRevision(); |
| 81 // m.testMergeState(); | 87 // m.testMergeState(); |
| 82 // m.testFileStatus(); | 88 // m.testFileStatus(); |
| 83 // m.dumpBranches(); | 89 // m.dumpBranches(); |
| 87 // m.testStatusInternals(); | 93 // m.testStatusInternals(); |
| 88 // m.catCompleteHistory(); | 94 // m.catCompleteHistory(); |
| 89 // m.dumpCompleteManifestLow(); | 95 // m.dumpCompleteManifestLow(); |
| 90 // m.dumpCompleteManifestHigh(); | 96 // m.dumpCompleteManifestHigh(); |
| 91 // m.bunchOfTests(); | 97 // m.bunchOfTests(); |
| 98 } | |
| 99 | |
| 100 private void testTreeTraversal() throws Exception { | |
| 101 File repoRoot = hgRepo.getWorkingDir(); | |
| 102 Path.Source pathSrc = new Path.SimpleSource(new PathRewrite.Composite(new RelativePathRewrite(repoRoot), hgRepo.getToRepoPathHelper())); | |
| 103 FileWalker w = new FileWalker(repoRoot, pathSrc); | |
| 104 int count = 0; | |
| 105 final long start = System.currentTimeMillis(); | |
| 106 while (w.hasNext()) { | |
| 107 count++; | |
| 108 w.next(); | |
| 109 } | |
| 110 System.out.printf("Traversal of %d files took %d ms", count, System.currentTimeMillis() - start); | |
| 92 } | 111 } |
| 93 | 112 |
| 94 /* | 113 /* |
| 95 * cpython repo with 70715 revisions. | 114 * cpython repo with 70715 revisions. |
| 96 3 revisions - 80 ms vs 250 ms (250ms init) | 115 3 revisions - 80 ms vs 250 ms (250ms init) |
