在Windows上有super pi可以计算PI,在Linux上,我之前也写过 y-cruncher 工具可用于计算PI;其实,Linux上只需要使用 bc 这简单的命令行工具也可以计算PI。
bc 命令加上 -l 参数后,就可以使用sin/cos/atan等数学函数,其中:
a (x) The arctangent of x, arctangent returns radians. # 就是计算 atan() 反正切值。
由于tan(PI/4) = 1 ,所以 PI = 4*atan(1)
在bc中,用scale=100 这样的变量来控制计算结果的小数点后面的位数。
所以,echo "scale=10000; 4*a(1)" | bc -l 这个命令就可以表示计算PI保留小数点后1万位小数。
加上time命令对PI计算过程计时,演示如下:
1 2 3 4 5 |
[jay@jay-linux ~]$ time echo "scale=10000; 4*a(1)" | bc -l 3.1415926535 ... #省略其余9990位小数 real 2m23.426s user 2m17.834s sys 0m0.053s |
我们可以看到通过bc这样计算,PI后1万位小数点精度,花费了143秒钟。
是的,就这么简单,用来简单测试一下单核CPU的计算能力也是挺直观的(主要和CPU主频相关)。
不过,我发现这种bc中调用a()的计算方法效率可能不高(耗时较多,且不能多线程、不能使用到AVX2之类的新指令),可以和我之前介绍y-cruncher工具比较一下。
参考资料:
man bc (搜索一下arctangent, scale等关键词)
y-cruncher: http://smilejay.cn/2017/03/y-cruncher-a-cpu-test-benchmark/
这假的吧,我找了一台机器,2个cpu,48核也是2分多
这么简单的问题 很难的假的吧
文章中写清楚了的;只能单线程运行。再多cpu也没用。