如何在MacOS中获取命令多次执行的平均毫秒级执行时间?
在MacOS中统计命令多次执行的平均耗时
给你写了个可以直接添加到.bashrc或.zshrc的函数,支持自定义执行次数和任意命令格式,最终输出平均执行时间(毫秒单位):
avg_time() { local iterations=$1 shift local total=0 local real_time for ((i=0; i<iterations; i++)); do # 捕获系统time工具的耗时输出,忽略命令本身的输出 real_time=$(/usr/bin/time -f "%E" "$@" 2>&1 >/dev/null) # 处理分:秒格式的时间,转换为总秒数 if [[ $real_time == *:* ]]; then local minutes=${real_time%%:*} local seconds=${real_time#*:} real_time=$(echo "$minutes*60 + $seconds" | bc -l) fi # 累加总耗时 total=$(echo "$total + $real_time" | bc -l) done # 计算平均耗时并转换为毫秒,保留两位小数 local avg=$(echo "$total / $iterations * 1000" | bc -l) printf "平均执行时间: %.2f 毫秒\n" "$avg" }
用法示例
- 执行10次
ls -l命令并统计平均耗时:avg_time 10 ls -l - 执行5次
sleep 0.2命令(预期平均耗时约200毫秒):avg_time 5 sleep 0.2
注意事项
- 函数依赖MacOS自带的
/usr/bin/time和bc工具,无需额外安装 - 若需要保留命令本身的输出,可删除代码中的
>/dev/null部分 - zsh环境完全兼容,直接添加到
.zshrc即可生效,添加后执行source ~/.zshrc使函数立即可用
内容的提问来源于stack exchange,提问作者Clerni
相关产品推荐
相关产品推荐

