配置awk命令?

配置awk命令?,awk,profiler,Awk,Profiler,可能是个愚蠢的问题,因为awk命令通常非常紧凑,只执行一到两个操作 有没有一种方法可以配置和awk命令?例如,如果它使用gsub、split、排序关联数组,是否有一种简单的方法来找出哪个部分阻碍了整个操作 编辑:具体地说,我在寻找每个子命令的执行时间,而不是它被调用了多少次。这可能吗?从gawk手册页: pgawk是gawk的评测版本。它在各方面都是相同的 除了程序运行得更慢,它会自动 完成后,在文件awkprof.out中生成执行配置文件。看见 下面是-profile选项 因此,如果您使用GN

可能是个愚蠢的问题,因为awk命令通常非常紧凑,只执行一到两个操作

有没有一种方法可以配置和awk命令?例如,如果它使用gsub、split、排序关联数组,是否有一种简单的方法来找出哪个部分阻碍了整个操作


编辑:具体地说,我在寻找每个子命令的执行时间,而不是它被调用了多少次。这可能吗?

从gawk手册页:

pgawk是gawk的评测版本。它在各方面都是相同的 除了程序运行得更慢,它会自动 完成后,在文件awkprof.out中生成执行配置文件。看见 下面是-profile选项

因此,如果您使用GNU实现,那么答案将是肯定的

为了回答下一个问题,手册页接着说

dgawk是一个awk调试器。它不是直接运行程序,而是 加载AWK源代码,然后提示调试命令。 与gawk和pgawk不同,dgawk只处理提供的AWK程序源代码 使用-f选项。调试器记录在GAWK:effectiveawk中 编程


从gawk手册页:

pgawk是gawk的评测版本。它在各方面都是相同的 除了程序运行得更慢,它会自动 完成后,在文件awkprof.out中生成执行配置文件。看见 下面是-profile选项

因此,如果您使用GNU实现,那么答案将是肯定的

为了回答下一个问题,手册页接着说

dgawk是一个awk调试器。它不是直接运行程序,而是 加载AWK源代码,然后提示调试命令。 与gawk和pgawk不同,dgawk只处理提供的AWK程序源代码 使用-f选项。调试器记录在GAWK:effectiveawk中 编程


有一个awk实现

您说您想要每个子命令的执行时间。 我是这样做的,不考虑语言:

给它足够的工作负载,让它运行足够长的时间,并用手表计时N秒。 然后再做一次,当它运行时,按Ctrl-C。 执行回溯以检查堆栈,并将其复制到文本编辑器中。 重复几次,比如10次

任何子命令都将在堆栈上显示它所花费时间的一小部分。 因此,如果排序占用50%的时间N/2秒,它将出现在大约5个样本上

这告诉你的是大人物,而不是小人物。我想你在找大的

有些人说这不准确,这是胡说八道。当然,时间的长短不是很精确——不需要精确。你需要的准确度是在位置上——精确定位问题所在,这就是问题所在


补充:你几乎可以这样做。如果在分析模式下运行程序,则每次按Ctrl-C或其他任何键时,它都会将调用堆栈打印到输出文件中。唯一的问题是,它打印的是函数名,而不是调用它们的行,这可能是您实际需要的

您说您想要每个子命令的执行时间。 我是这样做的,不考虑语言:

给它足够的工作负载,让它运行足够长的时间,并用手表计时N秒。 然后再做一次,当它运行时,按Ctrl-C。 执行回溯以检查堆栈,并将其复制到文本编辑器中。 重复几次,比如10次

任何子命令都将在堆栈上显示它所花费时间的一小部分。 因此,如果排序占用50%的时间N/2秒,它将出现在大约5个样本上

这告诉你的是大人物,而不是小人物。我想你在找大的

有些人说这不准确,这是胡说八道。当然,时间的长短不是很精确——不需要精确。你需要的准确度是在位置上——精确定位问题所在,这就是问题所在


补充:你几乎可以这样做。如果在分析模式下运行程序,则每次按Ctrl-C或其他任何键时,它都会将调用堆栈打印到输出文件中。唯一的问题是,它打印的是函数名,而不是调用它们的行,这可能是您实际需要的。

为gprof构建gawk的评测版本,或者使用基于内核的oprofile。然后,您可以详细了解gawk中响应脚本及其数据的各种内部函数花费了多少时间。像gsub和split这样的函数映射到gawk内部的函数

例如,gsub和其他函数由此源文件中的do_子函数处理:

因此,您可以查看在Dou sub中花费了多少时间

您希望编译gawk并将其链接到-pggcc选项。成功的 然后,程序运行将转储一个分析文件gmon.out,gprof将从该文件生成报告


我也强烈推荐oprofile,但深入了解它并不超出这个答案的范围。

为gprof构建gawk的评测版本,或者使用基于内核的oprofile。然后,您可以详细了解gawk中响应脚本及其数据的各种内部函数花费了多少时间。像gsub和split这样的函数映射到gawk内部的函数

例如,gsub和其他函数由此源文件中的do_子函数处理:

因此,您可以查看在Dou sub中花费了多少时间

您希望编译gawk并将其链接到-pggcc选项。程序的成功运行将转储一个分析文件gmon.out,gprof将从该文件生成报告


我也强烈推荐oprofile,但讨论它几乎超出了这个答案的范围。

几乎完美。现在,如何判断每个命令花费了多少时间?在这种情况下,请使用upvote按钮。无论如何:您可以随时打印systime,从EPOCH开始的秒数将被打印。你也可以用它做一些计算……这个功能看起来更像是覆盖率测试,告诉你哪些行被点击了多少次。这当然很有用,但不是评测。请注意lonestar21的edit:edit:具体来说,我在寻找每个子命令的执行时间,而不是它被调用的次数。几乎完美。现在,如何判断每个命令花费了多少时间?在这种情况下,请使用upvote按钮。无论如何:您可以随时打印systime,从EPOCH开始的秒数将被打印。你也可以用它做一些计算……这个功能看起来更像是覆盖率测试,告诉你哪些行被点击了多少次。这当然很有用,但不是评测,不是它被调用了多少次。Hmmm…将总时间添加到分析中可能是对gawk的合理大小贡献。Hmmm…将总时间添加到分析中可能是对gawk的合理大小贡献。这绝对是最接近可接受答案的事情。你能给出一个在实践中这样做的更彻底的例子吗,或者链接到一个?如果我理解正确的话,您是在建议从有关解释器的信息推断有关代码的分析信息。虽然这通常是有帮助的,但这并不是世界上最直观的事情。这绝对是最接近于可接受答案的事情。你能给出一个在实践中这样做的更彻底的例子吗,或者链接到一个?如果我理解正确的话,您是在建议从有关解释器的信息推断有关代码的分析信息。虽然它通常很有用,但它并不是世界上最直观的东西。