summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Fonseca <jfonseca@vmware.com>2022-06-16 11:06:12 +0100
committerMarge Bot <emma+marge@anholt.net>2022-06-28 09:54:29 +0000
commit0296050c0eaaccdcea3cc03cd16a1a5da89dfaf1 (patch)
treeadadc6b833f80c21e0fee02216946f2eda54e51c
parent69fbcdb568ab029ae10c10b919ad9b45f0a1f245 (diff)
trace: Parse character data more efficiently.
Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17107>
-rwxr-xr-xsrc/gallium/tools/trace/parse.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/tools/trace/parse.py b/src/gallium/tools/trace/parse.py
index 8afba7c51a4..ecd5424e6c1 100755
--- a/src/gallium/tools/trace/parse.py
+++ b/src/gallium/tools/trace/parse.py
@@ -72,7 +72,7 @@ class XmlTokenizer:
self.skip_ws = skip_ws
self.character_pos = 0, 0
- self.character_data = ''
+ self.character_data = []
self.parser = xpat.ParserCreate()
self.parser.StartElementHandler = self.handle_element_start
@@ -94,15 +94,16 @@ class XmlTokenizer:
def handle_character_data(self, data):
if not self.character_data:
self.character_pos = self.pos()
- self.character_data += data
+ self.character_data.append(data)
def finish_character_data(self):
if self.character_data:
- if not self.skip_ws or not self.character_data.isspace():
+ character_data = ''.join(self.character_data)
+ if not self.skip_ws or not character_data.isspace():
line, column = self.character_pos
- token = XmlToken(CHARACTER_DATA, self.character_data, None, line, column)
+ token = XmlToken(CHARACTER_DATA, character_data, None, line, column)
self.tokens.append(token)
- self.character_data = ''
+ self.character_data = []
def next(self):
size = 16*1024