shell 循环 expr

wd9053 2011-08-04 04:42:58
从文件中输入一个30000*400的矩阵,计算各列的最大值、总和等性质,求和运算我用的是`expr $v1 + $v2`的方式,现在运行时发现平均每行的处理时间大约为1秒。
如果把处理的代码去掉,只保留从文件中读取数值的操作,那么大概几秒就能将数据读完。我觉得可能是做加法时实际上创建了一个程序expr去执行,因而导致速度很慢。
请教下大家有没有什么好的解决方案。
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphiwcdj 2011-08-05
  • 打赏
  • 举报
回复
awk -f test.awk data


# test.awk

BEGIN{
res=0;
}
{
for(i=1; i<=NF; ++i)
{
res += $(i);
}

}
END{
print res;# calc sum of matrix
}
louyong0571 2011-08-05
  • 打赏
  • 举报
回复
这个东西要求效率的话,还是直接上C吧
yong_f 2011-08-05
  • 打赏
  • 举报
回复
不行的话自己写个小C程序。比awk都快
yong_f 2011-08-05
  • 打赏
  • 举报
回复
用awk吧
bourbaki 2011-08-05
  • 打赏
  • 举报
回复
expr是一个外部程序,每次调用都会创建进程,运算,销毁等,估计是慢在这个上面了. awk不错,或者用bash内部数学运算,应该不会这样了.
justkk 2011-08-04
  • 打赏
  • 举报
回复
试试
((a=$v1+$v2))
freetstar 2011-08-04
  • 打赏
  • 举报
回复
awk不错,把每行没列的保存进去,然后再进行运算

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧