1
# Copyright (C) 2006 by Canonical Ltd
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License version 2 as published by
5
# the Free Software Foundation.
7
# This program is distributed in the hope that it will be useful,
8
# but WITHOUT ANY WARRANTY; without even the implied warranty of
9
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
# GNU General Public License for more details.
12
# You should have received a copy of the GNU General Public License
13
# along with this program; if not, write to the Free Software
14
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
"""Tests for bzr xml serialization performance."""
22
from bzrlib.benchmarks import Benchmark
25
class BenchXMLSerializer(Benchmark):
27
def test_serialize_to_string_kernel_like_inventory(self):
28
# On jam's machine, ElementTree serializer took: 2161ms/13487ms
29
# with Robert's serializer: 631ms/10770ms
30
# with Entity escaper: 487ms/11636ms
31
# caching Entity escaper, empty cache: 448ms/ 9489ms
32
# caching Entity escaper, full cache: 375ms/ 9489ms
33
# passing around function: 406ms/ 8942ms
34
# cached, passing around function: 328ms/11248ms
35
# removing extra function: 354ms/ 8942ms
36
# cached, removing extra function: 275ms/11248ms
37
# no cache, real utf8: 363ms/11697ms
38
# cached, real utf8: 272ms/12827ms
39
# Really all we want is a real inventory
40
tree = self.make_kernel_like_committed_tree('.', link_bzr=True)
43
# We want a real tree with lots of file ids and sha strings, etc.
44
self.time(xml5.serializer_v5.write_inventory_to_string,
45
tree.basis_tree().inventory)
47
def test_serialize_kernel_like_inventory(self):
48
# Really all we want is a real inventory
49
tree = self.make_kernel_like_committed_tree('.', link_bzr=True)
52
f = open('kernel-like-inventory', 'wb')
54
# We want a real tree with lots of file ids and sha strings, etc.
55
self.time(xml5.serializer_v5.write_inventory,
56
tree.basis_tree().inventory, f)
60
def test_serialize_to_string_cached_kernel_like_inventory(self):
61
tree = self.make_kernel_like_committed_tree('.', link_bzr=True)
64
# We want a real tree with lots of file ids and sha strings, etc.
65
inv = tree.basis_tree().inventory
66
xml5.serializer_v5.write_inventory_to_string(inv)
68
self.time(xml5.serializer_v5.write_inventory_to_string, inv)
70
def test_serialize_to_string_no_cache_kernel_like_inventory(self):
71
tree = self.make_kernel_like_committed_tree('.', link_bzr=True)
73
cache_utf8.clear_encoding_cache()
75
# We want a real tree with lots of file ids and sha strings, etc.
76
inv = tree.basis_tree().inventory
77
self.time(xml5.serializer_v5.write_inventory_to_string, inv)