Skip to content

Commit bcb4202

Browse files
committed
Speed optimizations
1 parent 3117e20 commit bcb4202

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

llsd/serde_xml.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ def _BOOLEAN(self, v):
6565
else:
6666
return b'<boolean>false</boolean>'
6767
def _INTEGER(self, v):
68-
return b'<integer>' + _str_to_bytes(str(v)) + b'</integer>'
68+
return b'<integer>' + str(v).encode() + b'</integer>'
6969
def _REAL(self, v):
70-
return b'<real>' + _str_to_bytes(str(v)) + b'</real>'
70+
return b'<real>' + str(v).encode() + b'</real>'
7171
def _UUID(self, v):
7272
if v.int == 0:
7373
return b'<uuid/>'
7474
else:
75-
return b'<uuid>' + _str_to_bytes(str(v)) + b'</uuid>'
75+
return b'<uuid>' + str(v).encode() + b'</uuid>'
7676
def _BINARY(self, v):
7777
return b'<binary>' + base64.b64encode(v).strip() + b'</binary>'
7878
def _STRING(self, v):
@@ -95,14 +95,14 @@ def _write(self, something):
9595
self.stream.write(b'<?xml version="1.0" ?>'
9696
b'<llsd>')
9797

98-
iter_stack = [(iter([something]), b"")]
98+
iter_stack = [(iter([something]), b"", None)]
9999
while True:
100-
cur_iter, iter_type = iter_stack[-1]
100+
cur_iter, iter_type, iterable = iter_stack[-1]
101101
try:
102102
item = next(cur_iter)
103103
if iter_type == b"map":
104-
self.stream.write(b'<key>' + _str_to_bytes(self.xml_esc(UnicodeType(item[0]))) + b'</key>')
105-
item = item[1]
104+
self.stream.write(b'<key>' + self.xml_esc(UnicodeType(item)) + b'</key>')
105+
item = iterable[item]
106106
if isinstance(item, _LLSD):
107107
item = item.thing
108108
t = type(item)
@@ -113,10 +113,10 @@ def _write(self, something):
113113

114114
if tf == self._MAP:
115115
self.stream.write(b'<map>')
116-
iter_stack.append((iter(item.items()), b"map"))
116+
iter_stack.append((iter(list(item)), b"map", item))
117117
elif tf == self._ARRAY:
118118
self.stream.write(b'<array>')
119-
iter_stack.append((iter(item), b"array"))
119+
iter_stack.append((iter(item), b"array", None))
120120
else:
121121
self.stream.write(tf(item))
122122
except StopIteration:

tests/bench.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,11 @@ def build_deep_xml():
8585

8686
deep_data = {}
8787
curr_data = deep_data
88-
for i in range(1000):
88+
for i in range(250):
8989
curr_data["curr_data"] = {}
9090
curr_data["integer"] = 7
9191
curr_data["string"] = "string"
92+
curr_data["map"] = { "item1": 2.345, "item2": [1,2,3], "item3": {"item4": llsd.uri("http://foo.bar.com")}}
9293
curr_data = curr_data["curr_data"]
9394

9495
return deep_data

0 commit comments

Comments
 (0)