~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/benchmarks/bench_bundle.py

  • Committer: v.ladeuil+lp at free
  • Date: 2006-11-08 07:44:30 UTC
  • mfrom: (2123 +trunk)
  • mto: (2145.1.1 keepalive)
  • mto: This revision was merged to the branch mainline in revision 2146.
  • Revision ID: v.ladeuil+lp@free.fr-20061108074430-a9c08d4a475bd97f
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
from bzrlib.add import smart_add
25
25
from bzrlib.benchmarks import Benchmark
26
26
from bzrlib.branch import Branch
27
 
from bzrlib.bundle import read_bundle
28
27
from bzrlib.bundle.apply_bundle import install_bundle
29
 
from bzrlib.bundle.serializer import write_bundle
 
28
from bzrlib.bundle.serializer import read_bundle, write_bundle
30
29
from bzrlib.revision import NULL_REVISION
31
30
from bzrlib.revisionspec import RevisionSpec
32
31
from bzrlib.workingtree import WorkingTree
69
68
        os.chdir('branch_a')
70
69
        self.time(self.run_bzr, 'merge', '../bundle')
71
70
 
 
71
 
72
72
class BundleLibraryLevelWriteBenchmark(Benchmark):
73
73
    """ Benchmarks for the write_bundle library function. """
74
74
 
75
75
    def _time_read_write(self):
76
 
        print "timing"
77
76
        branch, relpath = Branch.open_containing("a")
78
77
        revision_history = branch.revision_history()
79
78
        bundle_text = StringIO()
80
 
        print "starting write bundle"
81
79
        self.time(write_bundle, branch.repository, revision_history[-1],
82
80
                  NULL_REVISION, bundle_text)
83
 
        print "stopped writing bundle"
84
81
        bundle_text.seek(0)
85
82
        target_tree = self.make_branch_and_tree('b')
86
 
        print "starting reading bundle"
87
83
        bundle = self.time(read_bundle, bundle_text)
88
 
        print "starting installing bundle"
89
84
        self.time(install_bundle, target_tree.branch.repository, bundle)
90
85
 
91
86
    def test_few_files_small_tree_1_revision(self):
100
95
        self.commit_some_revisions(tree, files[:5], 100, 1)
101
96
        self._time_read_write()
102
97
 
103
 
    def test_few_files_small_tree_1000_revision(self):
104
 
        os.mkdir("a")
105
 
        tree, files = self.create_with_commits(5, 1, directory_name="a")
106
 
        self.commit_some_revisions(tree, files[:5], 1000, 1)
107
 
        self._time_read_write()
108
 
 
109
98
    def test_few_files_moderate_tree_1_revision(self):
110
99
        os.mkdir("a")
111
100
        tree, files = self.create_with_commits(100, 1, directory_name="a")
118
107
        self.commit_some_revisions(tree, files[:5], 100, 1)
119
108
        self._time_read_write()
120
109
 
121
 
    def test_few_files_moderate_tree_1000_revision(self):
122
 
        os.mkdir("a")
123
 
        tree, files = self.create_with_commits(100, 1, directory_name="a")
124
 
        self.commit_some_revisions(tree, files[:5], 1000, 1)
125
 
        self._time_read_write()
126
 
 
127
110
    def test_some_files_moderate_tree_1_revision(self):
128
111
        os.mkdir("a")
129
112
        tree, files = self.create_with_commits(100, 1, directory_name="a")
130
113
        self.commit_some_revisions(tree, files[:100], 1, 1)
131
114
        self._time_read_write()
132
115
 
133
 
    def test_some_files_moderate_tree_100_revision(self):
134
 
        os.mkdir("a")
135
 
        tree, files = self.create_with_commits(100, 1, directory_name="a")
136
 
        self.commit_some_revisions(tree, files[:100], 100, 1)
137
 
        self._time_read_write()
138
 
 
139
 
    def test_some_files_moderate_tree_1000_revision(self):
140
 
        os.mkdir("a")
141
 
        tree, files = self.create_with_commits(100, 1, directory_name="a")
142
 
        self.commit_some_revisions(tree, files[:100], 1000, 1)
143
 
        self._time_read_write()
144
 
 
145
116
    def test_few_files_big_tree_1_revision(self):
146
117
        os.mkdir("a")
147
118
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
148
119
        self.commit_some_revisions(tree, files[:5], 1, 1)
149
120
        self._time_read_write()
150
121
 
151
 
    def test_few_files_big_tree_100_revision(self):
152
 
        os.mkdir("a")
153
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
154
 
        self.commit_some_revisions(tree, files[:5], 100, 1)
155
 
        self._time_read_write()
156
 
 
157
 
    def test_few_files_big_tree_1000_revision(self):
158
 
        os.mkdir("a")
159
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
160
 
        self.commit_some_revisions(tree, files[:5], 1000, 1)
161
 
        self._time_read_write()
162
 
 
163
122
    def test_some_files_big_tree_1_revision(self):
164
123
        os.mkdir("a")
165
124
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
166
125
        self.commit_some_revisions(tree, files[:100], 1, 1)
167
126
        self._time_read_write()
168
127
 
169
 
    def test_some_files_big_tree_100_revision(self):
170
 
        os.mkdir("a")
171
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
172
 
        self.commit_some_revisions(tree, files[:100], 100, 1)
173
 
        self._time_read_write()
174
 
 
175
 
    def test_some_files_big_tree_1000_revision(self):
176
 
        os.mkdir("a")
177
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
178
 
        self.commit_some_revisions(tree, files[:100], 1000, 1)
179
 
        self._time_read_write()
180
 
 
181
 
    def test_many_files_big_tree_1_revision(self):
182
 
        os.mkdir("a")
183
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
184
 
        self.commit_some_revisions(tree, files[:1000], 1, 1)
185
 
        self._time_read_write()
186
 
 
187
 
    def test_many_files_big_tree_100_revision(self):
188
 
        os.mkdir("a")
189
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
190
 
        self.commit_some_revisions(tree, files[:1000], 100, 1)
191
 
        self._time_read_write()
192
 
 
193
 
    def test_many_files_big_tree_1000_revision(self):
194
 
        os.mkdir("a")
195
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
196
 
        self.commit_some_revisions(tree, files[:1000], 1000, 1)
197
 
        self._time_read_write()
198
128
 
199
129
class BundleLibraryLevelInstallBenchmark(Benchmark):
200
130
    """ Benchmarks for the install_bundle library function. """
240
170
        self.commit_some_revisions(tree, files[:100], 1, 1)
241
171
        self._time_read_write()
242
172
 
243
 
    def test_some_files_moderate_tree_100_revision(self):
244
 
        os.mkdir("a")
245
 
        tree, files = self.create_with_commits(100, 1, directory_name="a")
246
 
        self.commit_some_revisions(tree, files[:100], 100, 1)
247
 
        self._time_read_write()
248
 
 
249
173
    def test_few_files_big_tree_1_revision(self):
250
174
        os.mkdir("a")
251
175
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
252
176
        self.commit_some_revisions(tree, files[:5], 1, 1)
253
177
        self._time_read_write()
254
178
 
255
 
    def test_few_files_big_tree_100_revision(self):
256
 
        os.mkdir("a")
257
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
258
 
        self.commit_some_revisions(tree, files[:5], 100, 1)
259
 
        self._time_read_write()
260
 
 
261
179
    def test_some_files_big_tree_1_revision(self):
262
180
        os.mkdir("a")
263
181
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
264
182
        self.commit_some_revisions(tree, files[:100], 1, 1)
265
183
        self._time_read_write()
266
184
 
267
 
    def test_some_files_big_tree_100_revision(self):
268
 
        os.mkdir("a")
269
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
270
 
        self.commit_some_revisions(tree, files[:100], 100, 1)
271
 
        self._time_read_write()
272
 
 
273
 
    def test_many_files_big_tree_1_revision(self):
274
 
        os.mkdir("a")
275
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
276
 
        self.commit_some_revisions(tree, files[:1000], 1, 1)
277
 
        self._time_read_write()
278
 
 
279
 
    def test_many_files_big_tree_100_revision(self):
280
 
        os.mkdir("a")
281
 
        tree, files = self.create_with_commits(1000, 1, directory_name="a")
282
 
        self.commit_some_revisions(tree, files[:1000], 100, 1)
283
 
        self._time_read_write()
284
 
 
285
185
 
286
186
if __name__ == '__main__':
287
187
    # USE the following if you want to regenerate the above test functions 
288
188
    for treesize, treesize_h in [(5, "small"), (100, "moderate"),
289
189
                                 (1000, "big")]:
290
 
        for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some"),
291
 
                                           (1000, "many")]:
 
190
        for bundlefiles, bundlefiles_h in [(5, "few"), (100, "some")]:
292
191
            if bundlefiles > treesize:
293
192
                continue
294
 
            for num_revisions in [1, 100, 1000]:
 
193
            for num_revisions in [1, 100]:
 
194
                if (num_revisions >= 100 and 
 
195
                        (bundlefiles >= 100 or treesize >= 1000)):
 
196
                    # Skip the 100x100x? tests.
 
197
                    # And the 100x?x1000
 
198
                    continue
295
199
                code = """\
296
200
    def test_%s_files_%s_tree_%s_revision(self):
297
201
        os.mkdir("a")
302
206
       treesize, bundlefiles, num_revisions)
303
207
                print code
304
208
 
305
 
 
306