From 5ea003752a9553b82a10ccbe5bdf0d41ceaf6b3b Mon Sep 17 00:00:00 2001 From: Jonathan Schwender <55576758+jschwe@users.noreply.github.com> Date: Wed, 25 Jun 2025 10:45:20 +0200 Subject: [PATCH] Fix write_json_to_file perf regressions (#37687) cd30b78 improved the memory efficiency of write_json_to_file, but this causes visible (when profiling) perf regression on my mac, which can easily be fixed by wrapping the file in a `BufWriter`. This still bounds peak memory usage, but keeps writing efficient. Testing: Manual profiling with samply. Signed-off-by: Jonathan Schwender --- components/net/resource_thread.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index 058702d2663..a150c9d4f41 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -8,7 +8,7 @@ use std::borrow::ToOwned; use std::collections::HashMap; use std::fs::File; use std::io::prelude::*; -use std::io::{self, BufReader}; +use std::io::{self, BufReader, BufWriter}; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex, RwLock, Weak}; use std::thread; @@ -524,8 +524,8 @@ where Err(why) => panic!("couldn't create {}: {}", display, why), Ok(file) => file, }; - - serde_json::to_writer_pretty(&mut file, data).expect("Could not serialize to file"); + let mut writer = BufWriter::new(&mut file); + serde_json::to_writer_pretty(&mut writer, data).expect("Could not serialize to file"); trace!("successfully wrote to {display}"); }