#!/bin/bash # 冒泡排序算法测试 - CPU负载测试 # 兼容旧版本Bash bubble_sort() { local array_name=$1 eval "local array=(\"\${${array_name}[@]}\")" local n=${#array[@]} for ((i = 0; i < n-1; i++)); do for ((j = 0; j < n-i-1; j++)); do if [ ${array[j]} -gt ${array[j+1]} ]; then # 交换元素 local temp=${array[j]} array[j]=${array[j+1]} array[j+1]=$temp fi done done # 将排序后的数组赋值回原变量 eval "${array_name}=(\"\${array[@]}\")" } # 生成随机数组 generate_random_array() { local size=$1 local array=() for ((i=0; i<size; i++)); do array[i]=$((RANDOM % 10000)) done # 返回数组元素 echo "${array[@]}" } # 主测试函数 run_test() { local array_size=${1:-1000} # 默认数组大小,降低以避免过长时间 local iterations=${2:-5} # 默认迭代次数 echo "=== Bash冒泡排序CPU负载测试 ===" echo "数组大小: $array_size" echo "迭代次数: $iterations" echo "开始时间: $(date)" echo "--------------------------------" local total_time=0 for ((iter=1; iter<=iterations; iter++)); do echo -n "第 $iter 次迭代..." # 生成新数组 local test_array test_array=($(generate_random_array $array_size)) # 计时开始 local start_time=$(date +%s) # 执行排序 bubble_sort test_array # 计时结束 local end_time=$(date +%s) local duration=$((end_time - start_time)) echo " 完成 - 耗时: ${duration}秒" total_time=$((total_time + duration)) # 小延迟,避免过热 sleep 1 done echo "--------------------------------" echo "总耗时: ${total_time}秒" echo "平均耗时: $((total_time / iterations))秒" echo "结束时间: $(date)" echo "测试完成!" } # 极简版本 - 如果上述仍有问题 simple_bubble_test() { echo "=== 极简冒泡排序测试 ===" echo "开始时间: $(date)" # 创建一个小数组进行测试 arr=(5 3 8 4 2 9 1 7 6) echo "原始数组: ${arr[@]}" # 冒泡排序 n=${#arr[@]} for ((i = 0; i < n-1; i++)); do for ((j = 0; j < n-i-1; j++)); do if [ ${arr[j]} -gt ${arr[j+1]} ]; then temp=${arr[j]} arr[j]=${arr[j+1]} arr[j+1]=$temp fi done done echo "排序后数组: ${arr[@]}" echo "结束时间: $(date)" } # 检查Bash版本 check_bash_version() { local bash_version=${BASH_VERSION%%[^0-9.]*} echo "当前Bash版本: $bash_version" if [ $(echo "$bash_version >= 4.3" | bc -l 2>/dev/null) -eq 1 ]; then echo "Bash版本支持高级特性" return 0 else echo "Bash版本较旧,使用兼容模式" return 1 fi } # 显示使用信息 show_usage() { echo "用法: $0 [选项]" echo "选项:" echo " normal [大小] [次数] 正常测试模式" echo " simple 极简测试模式" echo " check 检查Bash版本" echo " help 显示此帮助" echo "" echo "示例:" echo " $0 normal 500 3 # 500元素, 3次迭代" echo " $0 simple # 极简测试" } # 主程序 main() { case "$1" in "normal") if check_bash_version; then run_test "$2" "$3" else # 如果版本检查失败,使用更保守的参数 run_test "${2:-500}" "${3:-3}" fi ;; "simple") simple_bubble_test ;; "check") check_bash_version ;; "help"|"-h"|"--help") show_usage ;; *) echo "使用默认参数运行测试..." if check_bash_version; then run_test else run_test 500 3 fi ;; esac } # 运行主程序 main "$@"

浙公网安备 33010602011771号