bash计算性能
2016-04-15 10:44
477 查看
脚本1:
#!/bin/bash
i=0
for ((k=1;k<=10000;k++));do
i=`expr $i + 1`
done
echo $i
脚本2:
#!/bin/bash
i=0
for ((k=1;k<=10000;k++));do
let 'i=i+1'
done
echo $i
问题:哪个快?
答案:脚本2比脚本1快得多得多
有人会说这个问题很无聊,其实不无聊,如果不认真总结积累经验,bash想写好其实也不容易。
bash的常用整数计算方法有三种(以+1为例):
let 'i=i+1' (推荐)
i=`expr $i + 1`
i=$((i+1))
浮点数计算方法有两种:
bc方案:
# echo "scale=2;3/21" | bc
awk方案(推荐):
awk 'BEGIN{printf"%.2f\n",'$num1'/'$num2'}'
OK,回到前面的问题,为啥let比expr快?
[root@info-test-01 niewei]# type let
let is a shell builtin
[root@info-test-01 niewei]# type expr
expr is /usr/bin/expr
这里可以看到区别,因为let是内部命令。
最后再看看下面2个计算,哪个快?
time (awk 'BEGIN{ total=0; for(i=0; i<=100000; i++){total+=i;} print total;}')
time(total=0; for i in $(seq 100000); do total=$(($total+i)); done;echo $total;)
这些东西很简单,但是总结清楚形成良好习惯后对写高效bash很有帮助。
#!/bin/bash
i=0
for ((k=1;k<=10000;k++));do
i=`expr $i + 1`
done
echo $i
脚本2:
#!/bin/bash
i=0
for ((k=1;k<=10000;k++));do
let 'i=i+1'
done
echo $i
问题:哪个快?
答案:脚本2比脚本1快得多得多
有人会说这个问题很无聊,其实不无聊,如果不认真总结积累经验,bash想写好其实也不容易。
bash的常用整数计算方法有三种(以+1为例):
let 'i=i+1' (推荐)
i=`expr $i + 1`
i=$((i+1))
浮点数计算方法有两种:
bc方案:
# echo "scale=2;3/21" | bc
awk方案(推荐):
awk 'BEGIN{printf"%.2f\n",'$num1'/'$num2'}'
OK,回到前面的问题,为啥let比expr快?
[root@info-test-01 niewei]# type let
let is a shell builtin
[root@info-test-01 niewei]# type expr
expr is /usr/bin/expr
这里可以看到区别,因为let是内部命令。
最后再看看下面2个计算,哪个快?
time (awk 'BEGIN{ total=0; for(i=0; i<=100000; i++){total+=i;} print total;}')
time(total=0; for i in $(seq 100000); do total=$(($total+i)); done;echo $total;)
这些东西很简单,但是总结清楚形成良好习惯后对写高效bash很有帮助。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍