perf: remove large drawing stalls

Keep resident geometry and GPU resources stable across edits, MSPACE zoom, and Model/Paper switches. Add unified PERF output for tracing remaining costs.
This commit is contained in:
Hakan Seven committed 2026-07-25 13:34:48 +03:00
1 parent 2bc4c1c8f3
commit 12bf126646
26 files changed
+795 -326

No files matched your search

+4 -4
View File
@@ -451,7 +451,7 @@ fn save_owned_as_version_inner(
backup: bool,
clone_ms: f64,
) -> Result<(), String> {
let perf = std::env::var_os("OCS_PERF").is_some();
let perf = crate::perf::enabled();
let total_started = std::time::Instant::now();
doc.version = version;
let styles_started = std::time::Instant::now();
@@ -484,7 +484,7 @@ fn save_owned_as_version_inner(
return Err(format!("replace {}: {error}", path.display()));
}
if perf {
eprintln!(
crate::perf_record!(
"[perf] save total={:.1}ms clone={:.1} styles={:.1} dimensions={:.1} write={:.1} entities={} objects={} path={}",
total_started.elapsed().as_secs_f64() * 1000.0,
clone_ms,
@@ -567,7 +567,7 @@ pub fn save_to_bytes(
ext: &str,
version: acadrust::DxfVersion,
) -> Result<Vec<u8>, String> {
let perf = std::env::var_os("OCS_PERF").is_some();
let perf = crate::perf::enabled();
let total_started = std::time::Instant::now();
let clone_started = std::time::Instant::now();
let mut doc = doc.clone();
@@ -590,7 +590,7 @@ pub fn save_to_bytes(
};
if perf {
let bytes = result.as_ref().map_or(0, Vec::len);
eprintln!(
crate::perf_record!(
"[perf] save-bytes total={:.1}ms clone={:.1} styles={:.1} dimensions={:.1} write={:.1} bytes={} entities={} objects={}",
total_started.elapsed().as_secs_f64() * 1000.0,
clone_ms,