aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/bench/create-project.sh
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-23 19:44:56 +0900
committernsfisis <nsfisis@gmail.com>2026-07-23 19:44:56 +0900
commit770013c7097b6b5c0c49c7fa46d9235c308c4ad5 (patch)
tree8ff499a4f278d61c872bc697dfa39c895f18e9c0 /scripts/bench/create-project.sh
parentc899a4675ca90507a420d901ef7fa26d8b285f23 (diff)
downloadphp-shirabe-770013c7097b6b5c0c49c7fa46d9235c308c4ad5.tar.gz
php-shirabe-770013c7097b6b5c0c49c7fa46d9235c308c4ad5.tar.zst
php-shirabe-770013c7097b6b5c0c49c7fa46d9235c308c4ad5.zip
fix(bench): pin composer binary and work around HTTP/3 slowdown
Benchmarks were comparing against whatever composer happened to be on PATH instead of the pinned submodule version, and paid the HTTP/3 fallback penalty from composer/composer#12987 on every packagist request.
Diffstat (limited to 'scripts/bench/create-project.sh')
-rwxr-xr-xscripts/bench/create-project.sh7
1 files changed, 6 insertions, 1 deletions
diff --git a/scripts/bench/create-project.sh b/scripts/bench/create-project.sh
index 74d183bf..eebc5f0a 100755
--- a/scripts/bench/create-project.sh
+++ b/scripts/bench/create-project.sh
@@ -4,6 +4,9 @@ set -euo pipefail
REPO_ROOT="$(git -C "$(dirname "${BASH_SOURCE[0]}")" rev-parse --show-toplevel)"
BIN="$REPO_ROOT/target/release/shirabe"
+COMPOSER_BIN="$REPO_ROOT/composer/bin/composer"
+
+source "$REPO_ROOT/scripts/bench/lib.sh"
PACKAGE="laravel/laravel"
for arg in "$@"; do
@@ -20,6 +23,8 @@ fi
cargo build --manifest-path "$REPO_ROOT/Cargo.toml" --release --bin shirabe
+apply_http3_workaround
+
OUTDIR="${TMPDIR:-/tmp}/shirabe-bench-create-project-$$"
mkdir -p "$OUTDIR"
cd "$OUTDIR"
@@ -34,7 +39,7 @@ hyperfine \
--export-markdown "$OUTDIR/results-$PACKAGE_SLUG.md" \
--show-output \
--command-name Shirabe "RUST_BACKTRACE=1 '$BIN' create-project --profile --no-plugins --no-scripts --no-audit '$PACKAGE' '$TARGET_DIR-shirabe'" \
- --command-name Composer "composer create-project --profile --no-plugins --no-scripts --no-audit '$PACKAGE' '$TARGET_DIR-composer'"
+ --command-name Composer "'$COMPOSER_BIN' create-project --profile --no-plugins --no-scripts --no-audit '$PACKAGE' '$TARGET_DIR-composer'"
echo ">> results: $OUTDIR/results-$PACKAGE_SLUG.json" >&2
echo ">> $OUTDIR/results-$PACKAGE_SLUG.md" >&2