如何提高 awk 的计算速度

2020-06-18 08:55:14 +08:00
 deasty
有一个 50M 的文本,90 多万行,每行有个数字,用 shell 写个脚本用 awk 取数后经过一个幂运算再输出到新文本,7 个小时过去了,才完成 20 多万行,如何能提高这个效率?
3779 次点击
所在节点    问与答
26 条回复
Vegetable
2020-06-18 11:09:39 +08:00
btw,1024*1024 就是 2**20
klesh
2020-06-18 11:22:03 +08:00
测试命令:
seq 0 10000 | awk '{print "foo|"$1"|bar"}' > test.txt
time awk -F'|' '{print $2*1024*1024"|"$0}' test.txt

结果:
10484711424|foo|9999|bar
10485760000|foo|10000|bar

________________________________________________________
Executed in 76.44 millis fish external
usr time 54.70 millis 0.00 micros 54.70 millis
sys time 21.51 millis 962.00 micros 20.54 millis


硬件
CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
SSD: SanDisk SD8SB8U5
Kelan
2020-06-18 11:57:10 +08:00
这么小的文本跑 7 个小时有点离谱了把。
0x11901
2020-06-18 16:53:02 +08:00
说实话每次遇到这种问题总有一群人说用 python 不香么……

真是应了那句老话:当你手上有一把锤子的时候,看所有的东西都是钉子
freelancher
2020-06-18 18:40:49 +08:00
结果是个啥。得说呀。还是说附言二就解决了?
Semidio
2020-06-18 19:13:42 +08:00
@freelancher #24 注意看 18L 和附言 2 的区别

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/682534

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX