小编Mik*_*uke的帖子

AWK/GAWK 性能

我有一个 8400 万行的 XML,正在 Red Hat Linux 中使用“gawk”进行处理。(好吧,有些人会建议使用其他工具而不是 GAWK,但我的 XML 没有多行标记或任何其他特性,使 GAWK 不是这项工作的良好选择。)

我关心的是性能。

我最初的 AWK 脚本是这样的:

# Test_1.awk
BEGIN {FS = "<|:|=";}
{
if ($3 == "SubNetwork id")
    {
    # do something
    }
}
END {
# print something
}
Run Code Online (Sandbox Code Playgroud)

每行进行一次 8400 万次字符串比较。

我注意到“SubNetwork id”仅在该行中有 4 个字段 (NF=4) 时出现,因此我更改了脚本以减少字符串比较:

# Test_2.awk
BEGIN {FS = "<|:|=";}
{
if (NF == 4)
    {
    if ($3 == "SubNetwork id")
        {
        # do something
        }
    }
}
END {
# print something
} …
Run Code Online (Sandbox Code Playgroud)

performance awk gawk

6
推荐指数
1
解决办法
5675
查看次数

标签 统计

awk ×1

gawk ×1

performance ×1