打开

史上最意外的“屎山”代码:if循环19.8亿次,7年无人敢动

subtitle
娱乐最美好 2021-05-08 05:07

你玩过“侠盗猎车手5”(简称GTA 5)这个游戏吗?

这个游戏是由Rockstar Games游戏公司(被玩家称作R星)出版发行的一款围绕犯罪为主题的开放式动作冒险游戏。

打开网易新闻 查看更多图片

图:来源网络,侵删

这个游戏从2013年诞生至今,虽然是一个收费游戏,但是一直都被玩家认为是物超所值的,据说这款游戏仅2020年就卖了2000万份,累计销量更是达到1.4亿份,从销售量上就可以看出这个游戏有多让人上头!

图:来源网络,侵删

但这样一个让人上头的游戏,在其程序中却暗藏一个“屎山”代码,并且7年间没人敢动!

在2020年,无数玩家在网络上吐槽抱怨:进入GTA 5花费的时间太长了,少则5、6分钟,多则20分钟,对于急切想开始游戏的玩家来说,这么长的等待时间实在是太长了。

其中有一个玩家,实在不愿意等待这么长时间,于是用逆编程器查看了这个游戏的运行情况,终于找到了原因,原来R星写的代码太低效,加载时一个if竟然要循环19.8亿次。

发现这个游戏漏洞的玩家是一名不愿意透露姓名的黑客大哥,他将这一发现整理成帖子,火遍网络。

帖子的大火,让R星不得不面对这一问题,在和黑客大哥联系后,R星认可了他的改进方法,宣布在后续更新中修复相关问题,并且还慷慨的给他付了一笔1万美元的奖金。

这一事件也引来不少网友的吐槽,很多人说R星每年都能从这个项目上赚数亿美元,但是却不肯花几分钟去解决这么一个低级错误,实在可耻。

如果平均给每个玩家节省10秒,全球500万玩家一天就能节约5000万秒,一年中,节约的总时间大概能有数十年。相当于挽救了十多个人的生命!

据悉,R星到现在只是官宣会修复这一代码,但还没有实际修改这一代码,至今这个代码还在各个玩家的CPU上运行!

类似于GTA 5游戏中循环19.8亿次的if语句,就被大家称作为“屎山”代码。所谓“屎山”,是程序员间流传的一个梗,指陈年累月且复杂低效的代码,因为改动成本巨大,所有人避之不及。

据猜测R星不是不愿意去修改这一代码,而是因为修改的成本实在是太大,就像网友说的“只要游戏不崩,就不会改动任何一行代码”。

而关于“屎山”代码,可以说是在程序员的职业生涯中不可避免的事情,因为即使你写出非常完美的代码,等几个月或者几年再回头看时,也可能觉得是不够完美的。

虽然“屎山”代码不可避免,但是在重要项目的代码上,作为程序员,还是要尽量少出或者不出bug。最后希望大家的代码中“屎山”代码少之又少!

特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
156赞
大家都在看打开应用 查看全部
网易热搜每30分钟更新
打开应用 查看全部
打开