From 6ed3a85dd636366d194c9810fd777db7f25e263f Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 19 Aug 2026 09:39:24 +0900 Subject: 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 --- crates/shirabe/src/repository/composer_repository.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 = Vec::new(); for package in package_instances.into_iter() { -- cgit v1.3.1-4-g156e