最近写了个脚本,作为学习Go以来第一个实战。但是效果不理想。
一个文件。13G。逐行读取,将读取到的内容按空格切割为数组,取数组中Key=8的值累加。最后得到这个累加的值。
很简单的文件处理程序。Go和PHP都是单线程顺序执行。
虽然PHP是最好的语言,但是Go作为编译型强类型语言,在我的认知里要比PHP快得多才对,就像C的速度是PHP5的1000倍。可现在Go为什么会出现这样的结果?
Go用了300秒,PHP5.6用了200秒,PHP7用了47秒。我是真的不敢相信这就是Google大力推广的Go。我宁愿相信这是我代码的问题。
代码我贴在开源中国了。没得到理想的答案。突然想起了这里。
代码:http://www.oschina.net/question/938918_2145778
楼主代码的GO语言的处理逻辑与PHP的逻辑根本就不一样.
GO的处理逻辑是
1 每一行按空格分隔 生成slice
2 然后解析slice[8]
3 判断slice[5]是不是“keep_stopp=on,如果是计数
4 计算计数的和
PHP的逻辑是
1 每一行去空格,然后计算长度是否小于5,如果小于5,下一行.
2 ..
3 ..
4 ..
下面的就不用多讲了,逻辑不一样怎么进行比较,如果你的文件80%的行长度都是小于5的,根本就不会2,3,4.条件判读了。
这样比较GO 和PHP性能有什么意义?
#4
更多评论