a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!( 二 )


你抽一根烟的功夫,你电脑的CPU把这段代码悄悄执行了将近20亿次。更加噩梦的是,如果R星在商店里增加新东西,这段代码的执行次数还会以指数级进行增加!
小弟打个比喻,这感觉大概就像是,你本来和妹子的约会地点10分钟就能到,结果你脑子秀逗了,在家门口来回转圈了19.8亿次,才去找妹子,让妹子硬生生多等了你60分钟。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

不过非常可疑的是,从GTA5上线至今R星竟然从来没有考虑过优化这段代码。黑客大佬又在伴随着头发掉落的声音独自研究起这段反编译后的代码,发现了一个致命的问题,就是这个文件的读取明明存在着更有效率的方法。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

于是这位黑客大佬使用了代码中的hook strlen+hash map的方法,将这个文件的读取和储存过程进行了优化。
如果让小弟用“人话”来描述就是,把这个文件看做一个小区,每个数据看成每户人家,cpu想要做人口普查(读取数据),可以根据直接找到对应的的门牌号然后进行数据读取,再用小本本记录下来(储存数据)。下次想要再读取这家内容,直接看本本,不用每家每户再敲一次门,大大提升了数据的读取和存储效率。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

也就是这个方法的添加,自己的游戏启动现在只需要1分50秒就能加载完成,相比较之前的6分钟效率提高了70%。那么相比较来看,之前R星的这段祖传代码,完全就是“屎山”(比喻极其糟糕的代码)。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

这位大佬还把这段程序开源放在了github上,玩家如果需要可以自行下载。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

而且有意思的是,在这段反编译后的源码中,竟然出现了大量的TODO字样,一般在IT公司中这些都是给实习生或者新人做的工作,国外网友打趣道:这家伙竟然发现了R星分配给了实习生的活啊!
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

之后这位黑客大佬的行为在国外论坛和新闻上被广泛传播,很多玩家表示想要给大佬打CALL,并强烈建议大佬开通打赏功能,因为这件事实在是解决了大家一个扎心的痛点。更有人建议作者给R星发邮件。
a702|R星程序员这么水?10M的文件被读取20亿次,最后被黑客搞定!
文章插图

不过大佬表示现在R星肯定已经看到了,这样做可能会让一部分人陷入麻烦,在社交媒体上公布已经足够了。

【精彩生活】jing111.com小编为您精选以下内容,希望对您有所帮助: