You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测量两条Bash命令的执行时间差?

测量两条Bash命令的执行时间差(毫秒级、带方向)

你的原有实现需要手动处理时分秒转毫秒,确实比较繁琐。可以通过简化时间捕获的方式来优化,直接利用/usr/bin/time的内置格式输出秒级带小数的时间,省去字符串转换步骤,同时保证毫秒精度和差值的方向性。

优化后的脚本

#!/bin/bash

# 检查参数数量
if [ $# -ne 2 ]; then
    echo "用法: $0 <命令1> <命令2>"
    exit 1
fi

command1="$1"
command2="$2"

# 捕获命令1的执行时间(秒,带小数,精度到毫秒)
time1=$(/usr/bin/time -f "%e" bash -c "$command1" 2>&1 >/dev/null)
# 捕获命令2的执行时间
time2=$(/usr/bin/time -f "%e" bash -c "$command2" 2>&1 >/dev/null)

# 计算带方向的时间差,保留3位小数(对应毫秒级)
time_diff=$(printf "%.3f" $(echo "$time1 - $time2" | bc -l))

echo "时间差(命令1 - 命令2): ${time_diff} 秒"

关键优化点

  • 直接用%e格式:/usr/bin/time的%e参数会直接输出命令执行的总秒数(比如2.456),自带毫秒级精度,无需再手动解析时分秒
  • 包裹复杂命令:用bash -c "$command1"包裹传入的命令,能正确处理包含管道、空格、参数的复杂命令,避免参数拆分错误
  • 高精度计算:bc -l启用浮点运算支持,保证小数减法的准确性
  • 带方向的差值:结果为正说明命令1比命令2耗时更长,为负则说明命令1更快

内容的提问来源于stack exchange,提问作者Uberhumus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:00:01