aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-19 09:39:24 +0900
committernsfisis <nsfisis@gmail.com>2026-08-19 09:39:24 +0900
commit6ed3a85dd636366d194c9810fd777db7f25e263f (patch)
treed3d3fca59c6940583ad4e491514074580a3da3d6
parentf09578e81a1699f2f825e19705adebfdc4da249e (diff)
downloadphp-shirabe-6ed3a85dd636366d194c9810fd777db7f25e263f.tar.gz
php-shirabe-6ed3a85dd636366d194c9810fd777db7f25e263f.tar.zst
php-shirabe-6ed3a85dd636366d194c9810fd777db7f25e263f.zip
perf(composer-repository): pass packages into the loader by value
create_packages handed ArrayLoader::load_packages a clone of the package array it had just built and then dropped its own copy, so every package definition in the response was deep-copied once for nothing. Measured on `require laravel/laravel` (77 packages) against a warm cache with the network disabled: the create_packages span drops from 420 ms to 275 ms, and the run from 2.333 s to 2.192 s. Peak RSS is unchanged -- the copy was transient. `composer.lock` is byte-identical. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
-rw-r--r--crates/shirabe/src/repository/composer_repository.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/crates/shirabe/src/repository/composer_repository.rs b/crates/shirabe/src/repository/composer_repository.rs
index 411c0abe..9e85374d 100644
--- a/crates/shirabe/src/repository/composer_repository.rs
+++ b/crates/shirabe/src/repository/composer_repository.rs
@@ -2704,7 +2704,7 @@ impl ComposerRepository {
}
}
- let package_instances = self.loader.load_packages(packages.clone())?;
+ let package_instances = self.loader.load_packages(packages)?;
let mut results: Vec<BasePackageHandle> = Vec::new();
for package in package_instances.into_iter() {