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-12038main
parent
6871a0cdc7
commit
2e386f1baf
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue