Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
path: root/tamer
diff options
context:
space:
mode:
authorMike Gerwitz <mike.gerwitz@ryansg.com>2022-04-06 11:50:07 -0400
committerMike Gerwitz <mike.gerwitz@ryansg.com>2022-04-06 11:50:07 -0400
commit2e386f1baf516fa0ce300ba3e42d6076c179c87f (patch)
treed76da9fd605fdc9bd97f18c21160adc1a588db72 /tamer
parent6871a0cdc75e9140c8f8ae6116aae5695df0b387 (diff)
downloadtame-2e386f1baf516fa0ce300ba3e42d6076c179c87f.tar.gz
tame-2e386f1baf516fa0ce300ba3e42d6076c179c87f.tar.bz2
tame-2e386f1baf516fa0ce300ba3e42d6076c179c87f.zip
tamer: xir::reader::XmlXirReader::refill_buf: Clear read buffer
This was done in the old reader many months ago, but I somehow forgot to do it here (or forgot to). The new reader was using substantially more memory. Here's how this change affects the memory profile for one of our systems (output from `ms_print`): Before: MB 79.75^ # | # | # @ | @@@@ # @ | @@@ # @@ | @@@ @@@#@ @@@@@ | @@@ @@ #@@@@@@@@@@ | @@@@@@ @@@@ #@@@@@@@@@@ | @@ @@ @@@ @@ @ @@ #@@@@@@@@@@ | @@ @@ @@@ @@@@@ @@ #@@@@@@@@@@ | @@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@ @@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @ @@ @@ @ @@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @ @ @@@ @@ @@@ @@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @ @@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@@ @@@@@@ @@@@@@@@@ @@@@@ @@@@@ @@ @@@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@@ @ @@@@ @@@@@@@@@ @@@@@ @@@@@ @@ @@@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@@ @@@ @@@@ @@@@@@@@@ @@@@@ @@@@@ @@ @@@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ | @@@ @@@ @@@@ @@@@@@@@@ @@@@@ @@@@@ @@ @@@@@@@ @@@ @@@@@@ @@ #@@@@@@@@@@ 0 +----------------------------------------------------------------------->Gi 0 15.20 After: MB 63.25^ # | # | @@@@@@@@@#@ | @@@@@@ @@#@ | @@@@@@ @@#@ | @@@@@@ @@#@ | @@@@@@ @@#@ | @@@@@@@@@@@@ @@#@ | @@@@@@@@@ @@ @@@@@@ @@#@ | @@@@@@@@ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ | @@@@@@@@@@@@@@@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @ @@@ @@@ @@ @@@@@@ @@#@ 0 +----------------------------------------------------------------------->Gi 0 15.20 The bottom graph is virtually identical to the memory profile of the old reader, just with the exception that it's interning a bit more data than before, because we're reading more comprehensively. That's (potentially) the subject of future changes. DEV-12038
Diffstat (limited to 'tamer')
-rw-r--r--tamer/src/xir/reader.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/tamer/src/xir/reader.rs b/tamer/src/xir/reader.rs
index 65d78e4..46e0e9d 100644
--- a/tamer/src/xir/reader.rs
+++ b/tamer/src/xir/reader.rs
@@ -99,6 +99,7 @@ impl<'s, B: BufRead, S: Escaper> XmlXirReader<'s, B, S> {
pub fn refill_buf(&mut self) -> Option<Result<Token>> {
// Clear any previous buffer to free unneeded data.
self.tokbuf.clear();
+ self.readbuf.clear();
match self.reader.read_event(&mut self.readbuf) {
// This is the only time we'll consider the iterator to be done.