#!/bin/bash # 性能测试脚本 - 测试不同进程数和N值的加速比 echo "==========================================" echo "Prime Number Performance Analysis" echo "==========================================" echo "" OUTPUT_FILE="performance_analysis.txt" > $OUTPUT_FILE echo "N值 进程数 时间(秒) 加速比 效率" | tee -a $OUTPUT_FILE echo "--------------------------------------------------------" | tee -a $OUTPUT_FILE N_VALUES=(100000 200000 400000 800000) PROCESS_COUNTS=(1 2 4 6 8) for N in "${N_VALUES[@]}"; do echo "" echo "Testing N = $N" echo "------------------------" # 获取单进程时间作为基准 BASELINE_TIME=$(mpirun --oversubscribe -np 1 ./build/linux/x86_64/release/prime_par_naive $N 2>&1 | grep "Time =" | grep -oP '[0-9.]+') for P in "${PROCESS_COUNTS[@]}"; do TIME=$(mpirun --oversubscribe -np $P ./build/linux/x86_64/release/prime_par_naive $N 2>&1 | grep "Time =" | grep -oP '[0-9.]+') SPEEDUP=$(echo "scale=2; $BASELINE_TIME / $TIME" | bc) EFFICIENCY=$(echo "scale=2; $SPEEDUP / $P * 100" | bc) echo "$N $P $TIME ${SPEEDUP}x ${EFFICIENCY}%" | tee -a $OUTPUT_FILE done done echo "" echo "Results saved to: $OUTPUT_FILE"