diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-19 09:39:24 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-19 09:39:24 +0900 |
| commit | 6ed3a85dd636366d194c9810fd777db7f25e263f (patch) | |
| tree | d3d3fca59c6940583ad4e491514074580a3da3d6 /crates/shirabe/src | |
| parent | f09578e81a1699f2f825e19705adebfdc4da249e (diff) | |
| download | php-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>
Diffstat (limited to 'crates/shirabe/src')
| -rw-r--r-- | crates/shirabe/src/repository/composer_repository.rs | 2 |
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() { |
