• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Google GO真正可以运行多快?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我还是70年代少年时就开始使用带盒驱动器和BASIC语言的老式TRS 80以及带有RPGII和COBOL的IBM大型机进行编程。 TRS 80正在尝试基于文本的游戏,但它们很有趣。 对于现实世界,我们使用计算机来批处理过程数据,并为此优化了语言。 RPG(不要与角色扮演游戏混为一谈)超级强大,但是却很奇怪,因为它是针对80列打孔卡进行了完全优化的,并且花费了尽可能少的精力,而COBOL和BASIC是自由格式。 幸运的是,如今RPG和BASIC的安装数量相对较少,但是COBOL呢?可以替换吗?

据报道,COBOL仍然是全球已安装软件的70%,处理的交易量是Google和YouTube搜索查询的200倍。 一个大问题是,没有人会再学习COBOL,而作为一种语言,虽然它很容易学习,但COBOL不再像所教的那样。 有了该序言,您可能会想知道我要怎么做。 长期以来,我一直以为Python会成为一个非常有价值的继承者,但我相信,但是在最近几年中,我一直在使用Google相对较新的Go语言进行一些小型项目。 我并不想真正进行另一种语言比较,而是对原始批处理进行COBOL擅长的性能比较。

我拉下了一个地理数据文件,它是CSV文件中的一系列数字字符串,作为测试用例。 该文件约为190MB,包含2,173,762条记录。 这似乎是一个很好的测试案例,可以为我们提供及时的结果。

我想做的另一件事是使用一台功率不足的旧计算机,所以我们选择了只有640MB RAM并运行Windows XP的计算机。

对于COBOL编译器,我使用了我自己的产品KOBOL,这是几年前测试中速度最快的COBOL。 COBOL语言中最昂贵的动词之一是“ UNSTRING”命令,该命令将基于定界符的字符串解析为一个或多个变量。 除了需要提前定义所有变量之外,这非常方便,因此您需要了解正在使用的数据。 这不是Go中的限制,但我想以尽可能相似的方式定义两个应用。

为了使测试简单,我们要做的就是读取文件并将其在逗号分隔符上解析为所需数量的变量。 由于RAM数量少且记录数量众多,我以为结果应该非常相似,因为我们将要从磁盘进行大量读取。 不过,我对结果感到惊讶。 我们在每次运行之间进行了一次重新启动,以确保每次系统都处于类似状态,并且我们多次运行测试以确认结果,总分将反映在此处。

有点麻烦的是,Go语言有多种读取文件的方式。 我保持简单,并限制自己阅读和阅读所有内容。 功能上的区别是READALL首先将整个文件插入到内存中,然后在该文件上执行操作。 这是数字,然后我们将审查结果:

COBOL		2 minutes 28.27 seconds
Go READ 40.55 seconds
Go READALL 6 minutes 17.5 seconds

对于COBOL应用程序,我什至进行了测试,删除了记录上的所有处理,只保留了读取内容,结果只差了几秒钟,这让我感到非常惊讶。 显然,我的KOBOL编译器比我想象的还要高效。 然后,我在具有4GB RAM的64位Windows 7计算机上运行了GO程序,以了解它们的工作方式。 我没有使用KOBOL进行此操作,因为我们没有64位版本。

Go READ 	23.10 seconds
Go READALL 23.61 seconds

查看READALL的区别。 它仍然不如READ快,但是RAM和体系结构之间的变化产生了巨大的差异。 虽然它在READ方面的改进还不到2倍,但在READALL方面却接近9倍。 但是,这告诉我的是,对于任何严肃的批处理而言,READALL的性能都是一个非常糟糕的主意,因为结果在系统之间会发生巨大变化。 对于小文件来说,这可能是一个好主意,但我将不使用它进行批处理。

我很喜欢COBOL来完成预期的工作,但是Go是现代的,干净的,可移植的,编译的,快速的,并且与当今的教学非常相似。 Go比使用Java提前了光年,这绝对不适合替换COBOL。 我使用Go的时间越长,就越喜欢它来替代几乎所有其他语言,从Web到遍历数百万条医疗记录的服务器。

在这里查看代码真棒!

因此,要回答标题中的问题,Go可以快速进行。 比目前运行世界各地计算机的COBOL工作速度更快。

From: https://hackernoon.com/how-fast-can-google-go-really-go-790be9fd515a


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go入门笔记40-leveldb相关的库发布时间:2022-07-10
下一篇:
golang包管理解决之道——go modules初探发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap