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

如何简化计算任务耗时平均值的awk脚本,减少冗余代码?

优化冗余的AWK任务耗时统计脚本

原始日志示例

1699740442177 Start A
1699740442177 Start B
1699740442255 Start C
1699740442261 Finish B
1699740442337 Finish C
1699740442337 Finish A

原始脚本的冗余问题

你最初的脚本为每个任务单独定义变量(startA/sumA/numA等),每个任务都要重复写几乎一致的逻辑,当任务数量增加时,代码会变得臃肿且难以维护。

优化后的AWK脚本

利用AWK的关联数组特性,用任务名称作为数组键,统一处理所有任务的Start/Finish事件:

/Start/ {
    start_time[$3] = $1  # 以任务名为键,存储对应开始时间
}
/Finish/ {
    task = $3
    duration = $1 - start_time[task]
    sum_duration[task] += duration
    count[task]++
    delete start_time[task]  # 可选:清理已完成任务的缓存,节省内存
}
END {
    # 遍历所有任务,输出各自的平均耗时
    for (task in sum_duration) {
        print task, "平均耗时:", sum_duration[task]/count[task]
    }
}

优化说明

  • 用关联数组start_time统一存储所有任务的开始时间,无需为每个任务单独定义变量
  • 遇到Finish事件时,通过任务名直接匹配对应的开始时间,计算耗时后累加到sum_duration数组,同时更新该任务的执行次数count
  • END块自动遍历所有已统计的任务,输出平均耗时,新增任务时无需修改脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:03