~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/benchmarks/bench_pack.py

Merge lockable-config-files into remove-gratuitous-ensure-config-dir-exist-calls resolving conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Canonical Ltd
2
 
#
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
#
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
#
13
 
# You should have received a copy of the GNU General Public License
14
 
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
 
 
17
 
"""Benchmarks for pack performance"""
18
 
 
19
 
import os
20
 
 
21
 
from bzrlib import (
22
 
    pack,
23
 
    )
24
 
from bzrlib.benchmarks import Benchmark
25
 
 
26
 
 
27
 
class BenchPack(Benchmark):
28
 
    """Benchmark pack performance."""
29
 
 
30
 
    def test_insert_one_gig_1k_chunks_no_names_disk(self):
31
 
        # test real disk writing of many small chunks.
32
 
        # useful for testing whether buffer sizes are right
33
 
        transport = self.get_transport()
34
 
        stream = transport.open_write_stream('pack.pack')
35
 
        writer = pack.ContainerWriter(stream.write)
36
 
        self.write_1_gig(writer)
37
 
        stream.close()
38
 
 
39
 
    def test_insert_one_gig_1k_chunks_no_names_null(self):
40
 
        # write to dev/null so we test the pack processing.
41
 
        transport = self.get_transport()
42
 
        dev_null = open('/dev/null', 'wb')
43
 
        writer = pack.ContainerWriter(dev_null.write)
44
 
        self.write_1_gig(writer)
45
 
        dev_null.close()
46
 
 
47
 
    def write_1_gig(self, writer):
48
 
        one_k = "A" * 1024
49
 
        writer.begin()
50
 
        def write_1g():
51
 
            for hunk in xrange(1024 * 1024):
52
 
                writer.add_bytes_record(one_k, [])
53
 
        self.time(write_1g)
54
 
        writer.end()