fix(benchmark): 简化显示纯耗时, 修复 pipefail/BOA源/JerryScript编译/录入值

- 输出移除 X.Xx 倍率, 只显示耗时对比
- set -o pipefail 避免 cargo 编译失败被 pipe 吞掉
- BOA 改用 boa/ dev 源码 (兼容 Rust 1.96+)
- build.sh 修复 IFS='|' 分隔, 解决多词参数被拆碎
- 加入 pkg-config/cmake/nodejs 依赖, 支持 BOA/JerryScript/V8
- test262 各引擎全部改为录入值, 仅 OxideJS 现场跑

(cherry picked from commit d64c6577e768195687b182a3ccb6ef36d318e905)
This commit is contained in:
爱特每羊队
2026-06-29 15:54:07 +08:00
parent c61442dbf0
commit 0d926d6ac2
2 changed files with 38 additions and 89 deletions
+17 -17
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# OxideJS Benchmark Suite — 一键构建
# 兼容: Debian/Ubuntu, RHEL/Fedora, Arch, Alpine, openSUSE
set -e
set -eo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(dirname "$SCRIPT_DIR")"
@@ -13,23 +13,23 @@ step() { echo -e "\n${BOLD}${CYAN}═══ $* ═══${NC}"; }
# ── 包管理器检测 ─────────────────────────────────────────────────────
detect_pm() {
if command -v apt-get &>/dev/null; then echo "apt" "apt-get install -y" "apt-get update -qq"
elif command -v dnf &>/dev/null; then echo "dnf" "dnf install -y" "dnf check-update 2>/dev/null || true"
elif command -v yum &>/dev/null; then echo "yum" "yum install -y" "yum check-update 2>/dev/null || true"
elif command -v pacman &>/dev/null; then echo "pacman" "pacman -S --noconfirm" "pacman -Sy --noconfirm"
elif command -v apk &>/dev/null; then echo "apk" "apk add --no-cache" "apk update"
elif command -v zypper &>/dev/null; then echo "zypper" "zypper install -y" "zypper refresh"
else echo "unknown" "" ""
if command -v apt-get &>/dev/null; then echo "apt|apt-get install -y|apt-get update -qq"
elif command -v dnf &>/dev/null; then echo "dnf|dnf install -y|dnf check-update 2>/dev/null || true"
elif command -v yum &>/dev/null; then echo "yum|yum install -y|yum check-update 2>/dev/null || true"
elif command -v pacman &>/dev/null; then echo "pacman|pacman -S --noconfirm|pacman -Sy --noconfirm"
elif command -v apk &>/dev/null; then echo "apk|apk add --no-cache|apk update"
elif command -v zypper &>/dev/null; then echo "zypper|zypper install -y|zypper refresh"
else echo "unknown||"
fi
}
map_pkgs() {
case "$1" in
apt) echo "gcc make git python3 python3-pip curl pkg-config cmake";;
dnf|yum) echo "gcc make git python3 python3-pip curl pkgconfig cmake";;
pacman) echo "gcc make git python python-pip curl pkgconf cmake";;
apk) echo "gcc make git python3 py3-pip curl pkgconfig cmake";;
zypper) echo "gcc make git python3 python3-pip curl pkg-config cmake";;
apt) echo "gcc make git python3 python3-pip curl pkg-config cmake nodejs";;
dnf|yum) echo "gcc make git python3 python3-pip curl pkgconfig cmake nodejs";;
pacman) echo "gcc make git python python-pip curl pkgconf cmake nodejs";;
apk) echo "gcc make git python3 py3-pip curl pkgconfig cmake nodejs";;
zypper) echo "gcc make git python3 python3-pip curl pkg-config cmake nodejs";;
*) echo "gcc make git python3 curl";;
esac
}
@@ -103,10 +103,10 @@ build_quickjs() {
# ── BOA ──────────────────────────────────────────────────────────────────
build_boa() {
step "BOA (baseline v0.21)"
local boa_dir="$REPO_ROOT/baseline-boa"
step "BOA (dev)"
local boa_dir="$REPO_ROOT/boa"
if [ ! -d "$boa_dir" ]; then
warn "baseline-boa/ 不存在,跳过"
warn "boa/ 不存在,跳过"
return 0
fi
if [ -f "$boa_dir/target/release/boa" ]; then
@@ -188,7 +188,7 @@ echo -e "${BOLD}${CYAN}╚══════════════════
step "检测环境"
echo " OS: $(uname -a 2>/dev/null | cut -d' ' -f1-3)"
echo " CPU: $(nproc 2>/dev/null || echo '?') cores"
read pm icmd ucmd <<< $(detect_pm)
IFS='|' read pm icmd ucmd <<< $(detect_pm)
info "包管理器: $pm"
install_deps "$pm" "$icmd" "$ucmd" $(map_pkgs "$pm")