comparison cmdline/org/tmatesoft/hg/console/Main.java @ 576:3c4db86e8c1f

Issue 43: poor performance with InflaterDataAccess. Phase 2: inflate into buffer, effective skip and readByte/readBytes()
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Tue, 16 Apr 2013 19:31:57 +0200
parents 88afffd39899
children e4a71afd3c71
comparison
equal deleted inserted replaced
575:8bf184c9d733 576:3c4db86e8c1f
100 System.out.println("REPO:" + hgRepo.getLocation()); 100 System.out.println("REPO:" + hgRepo.getLocation());
101 } 101 }
102 102
103 public static void main(String[] args) throws Exception { 103 public static void main(String[] args) throws Exception {
104 Main m = new Main(args); 104 Main m = new Main(args);
105 m.checkFileSneakerPerformance2(); 105 m.checkFileSneakerPerformance();
106 // m.testRevert(); 106 // m.testRevert();
107 // m.testCheckout(); 107 // m.testCheckout();
108 // m.tryExtensions(); 108 // m.tryExtensions();
109 // m.dumpBookmarks(); 109 // m.dumpBookmarks();
110 // m.readConfigFile(); 110 // m.readConfigFile();
133 private void checkFileSneakerPerformance() throws Exception { 133 private void checkFileSneakerPerformance() throws Exception {
134 HgChangesetFileSneaker fs1 = new HgChangesetFileSneaker(hgRepo); 134 HgChangesetFileSneaker fs1 = new HgChangesetFileSneaker(hgRepo);
135 HgChangesetFileSneaker fs2 = new HgChangesetFileSneaker(hgRepo); 135 HgChangesetFileSneaker fs2 = new HgChangesetFileSneaker(hgRepo);
136 fs1.followRenames(true); 136 fs1.followRenames(true);
137 fs2.followRenames(true); 137 fs2.followRenames(true);
138 Nodeid cset = hgRepo.getChangelog().getRevision(TIP); 138 Nodeid cset = hgRepo.getChangelog().getRevision(2);
139 Path fname = Path.create("dir3/file8"); 139 Path fname = Path.create("dir9/file9"); // close to the manifest end
140 fs1.changeset(cset); 140 fs1.changeset(cset);
141 fs2.changeset(cset); 141 fs2.changeset(cset);
142 // hgRepo.getManifest().getFileRevision(TIP, fname); 142 // hgRepo.getManifest().getFileRevision(TIP, fname);
143 final long start1 = System.nanoTime(); 143 final long start1 = System.nanoTime();
144 boolean e1 = fs1.checkExists(fname); 144 boolean e1 = fs1.checkExists(fname);
151 if (!fr.equals(fs1.revision()) || !fr.equals(fs2.revision())) { 151 if (!fr.equals(fs1.revision()) || !fr.equals(fs2.revision())) {
152 throw new AssertionError(); 152 throw new AssertionError();
153 } 153 }
154 ManifestRevision mr = new ManifestRevision(null, null); 154 ManifestRevision mr = new ManifestRevision(null, null);
155 final long _s1 = System.nanoTime(); 155 final long _s1 = System.nanoTime();
156 hgRepo.getManifest().walk(2, 2, mr); 156 hgRepo.getManifest().walk(0, 0, mr);
157 final long _e1 = System.nanoTime(); 157 final long _e1 = System.nanoTime();
158 hgRepo.getManifest().getFileRevision(2, fname); 158 hgRepo.getManifest().getFileRevision(0, fname);
159 final long _e2 = System.nanoTime(); 159 final long _e2 = System.nanoTime();
160 System.out.printf("\n\tManifestRevision:%d ms, getFileRevision:%d ms\n", (_e1-_s1)/1000000, (_e2-_e1)/1000000); 160 System.out.printf("\n\tManifestRevision:%d ms, getFileRevision:%d ms\n", (_e1-_s1)/1000000, (_e2-_e1)/1000000);
161 } 161 }
162 162
163 // -agentlib:hprof=cpu=times,heap=sites,depth=10 163 // -agentlib:hprof=cpu=times,heap=sites,depth=10
164 private void checkFileSneakerPerformance2() throws Exception { 164 private void checkFileSneakerPerformance2() throws Exception {
165 Path fname = Path.create("dir3/file8"); 165 Path fname = Path.create("dir9/file9"); // close to the manifest end
166 hgRepo.getManifest().getFileRevision(2, fname); 166 hgRepo.getManifest().getFileRevision(0, fname);
167 // ManifestRevision mr = new ManifestRevision(null, null); 167 // ManifestRevision mr = new ManifestRevision(null, null);
168 // hgRepo.getManifest().walk(2, 2, mr); 168 // hgRepo.getManifest().walk(2, 2, mr);
169 } 169 }
170 170
171 171