如何在Shell脚本中以微秒(usecs)为单位测量命令执行耗时?
在Shell脚本中测量命令的微秒级执行耗时
要在Shell中实现微秒级的耗时测量,核心是获取精确的时间戳并计算差值,以下是两种实用的实现方式:
方法一:基于date命令的整数运算(快速简洁)
利用date +%s%N获取秒+纳秒格式的时间戳,通过整数运算将纳秒差转换为微秒:
# 记录起始时间(秒+9位纳秒) start_time=$(date +%s%N) # 执行需要测量的命令 Command1 command2 # 记录结束时间 end_time=$(date +%s%N) # 计算微秒耗时:纳秒差除以1000,整数除法自动向下取整 time_taken=$(( (end_time - start_time) / 1000 )) # 输出结果 echo "总执行耗时:${time_taken} 微秒"
方法二:用bc实现浮点精确计算
如果需要保留小数级的微秒精度,可以借助bc工具做浮点运算:
start_time=$(date +%s%N) Command1 command2 end_time=$(date +%s%N) # 计算精确到小数点后3位的微秒数 time_taken=$(echo "scale=3; ($end_time - $start_time) / 1000" | bc) echo "总执行耗时:${time_taken} 微秒"
关于time命令的补充说明
系统默认的time命令(部分Shell是内置命令)通常不直接输出微秒,但可以使用/usr/bin/time(独立可执行文件)指定输出格式,比如:
# 输出包含毫秒级精度的耗时(%E代表实际耗时) /usr/bin/time -f "实际耗时:%E 秒" Command1
但如果需要直接获取数值型的微秒耗时用于后续脚本处理,前面的date时间戳方法会更灵活。
内容的提问来源于stack exchange,提问作者user3555115
相关产品推荐
相关产品推荐

