From 4acb0e712411d7592a10e7e6d96e36e97c858987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 7 Oct 2026 10:58:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=B6=E6=B3=A5=E5=84=BF=E4=BA=A7=E7=89=A9?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E6=8C=89=E5=B7=B2=E7=9F=A5=E4=BD=93=E7=A7=AF?= =?UTF-8?q?=E9=A2=84=E5=88=86=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - read_package_bytes 接收调用方已验证的 expected_bytes,用 Vec::with_capacity - 接近 200 MiB 的包不再因反复扩容多复制约一倍数据 --- .../src-tauri/src/export/draft/taonier/build.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs b/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs index 8114b2b8b..37f1f3316 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs @@ -239,7 +239,7 @@ pub(crate) fn read_artifact_package(root: &Path) -> Result Result Result<(Vec, String), String> { +/// +/// 调用方已经确认过 `expected_bytes` 在上限内,按它预分配容量即可,避免接近 200 MiB 的包在 +/// 反复扩容时多复制约一倍数据。 +fn read_package_bytes(path: &Path, expected_bytes: u64) -> Result<(Vec, String), String> { let mut file = std::fs::File::open(path) .map_err(|error| format!("打开陶泥儿产物失败:{}:{error}", path.display()))?; let mut hasher = Sha256::new(); - let mut bytes = Vec::new(); + let mut bytes = Vec::with_capacity(expected_bytes as usize); let mut buffer = vec![0u8; PACKAGE_READ_CHUNK_BYTES]; loop { let read = file