首页 国产 亚洲 小说图片,337p人体粉嫩胞高清视频,久久精品国产72国产精,国产乱理伦片在线观看

設(shè)為書(shū)簽 Ctrl+D將本頁(yè)面保存為書(shū)簽,全面了解最新資訊,方便快捷。 您也可下載桌面快捷方式。點(diǎn)擊下載 | 新浪科技 | 新浪首頁(yè) | 新浪導(dǎo)航

GTA 5祖?zhèn)鳌甘荷健勾a終于修復(fù)!R星認(rèn)可黑客方案,還給他發(fā)了1萬(wàn)美元獎(jiǎng)金

2021-03-16 12:31:47    創(chuàng)事記 微博 作者:   

來(lái)源:量子位

賈浩楠 發(fā)自 凹非寺

量子位 報(bào)道 | 公眾號(hào) QbitAI

折磨全球無(wú)數(shù)GTA 5玩家的聯(lián)機(jī)版超長(zhǎng)加載時(shí)間問(wèn)題,終于要修復(fù)了。

什么?R星(游戲開(kāi)發(fā)商RockStar)主動(dòng)改善玩家游戲體驗(yàn)?不存在的。

△

Please wait forever to play

打開(kāi)GTA 5聯(lián)機(jī)版,要跑19.8億次if語(yǔ)句,一支煙的功夫游戲都加載不完。

這堪稱游戲開(kāi)發(fā)史上最大的“屎山”代碼,存在了7年,R星從沒(méi)想過(guò)要修復(fù)….

玩家對(duì)GTA 5聯(lián)機(jī)版可謂又愛(ài)又恨,有人甚至破口大罵:

直到一位黑客大哥路過(guò),實(shí)在忍不了惡臭的代碼,嘲諷完R星后,隨手按了“沖水鍵”,直接將等待時(shí)間壓縮70%。

鑒于R星失誤實(shí)在太低級(jí)太離譜,而這位老哥的方法又太有效,以致無(wú)數(shù)玩家稱他“功德無(wú)量”。

如果平均給每個(gè)玩家節(jié)省10秒,全球500萬(wàn)玩家一天就能節(jié)約5000萬(wàn)秒,一年中,節(jié)約的總時(shí)間大概能有數(shù)十年。相當(dāng)于挽救了十多個(gè)人的生命!

R星這才坐不住了,趕忙官宣修復(fù)bug,不但采用了黑客的方案,還大方的給他獎(jiǎng)勵(lì)了1萬(wàn)美元“賞金”。

(注:所謂“屎山”,是程序員間流傳的一個(gè)梗,指陳年累月且復(fù)雜低效的代碼,因?yàn)楦膭?dòng)成本巨大,所有人避之不及。)

黑客“治病救人”

不久前,量子位曾經(jīng)介紹過(guò)黑客大哥通過(guò)逆編譯器檢查GTA 5,并且重寫(xiě)代碼,一下節(jié)約70%加載時(shí)間的故事。

先來(lái)前情回顧一下。

簡(jiǎn)單地說(shuō),就是GTA 5聯(lián)機(jī)版加載時(shí)間長(zhǎng)得過(guò)分,有超過(guò)80%的玩家要等3分鐘以上,有的人甚至要等15-20分鐘。

一位黑客大哥實(shí)在忍不了,于是決定開(kāi)扒GTA 5的代碼,看看到底是哪里出了問(wèn)題。

首先,他用Windows任務(wù)管理器,來(lái)判斷聯(lián)機(jī)版GTA 5在啟動(dòng)時(shí),都調(diào)用了哪些計(jì)算機(jī)資源。

在1分鐘的時(shí)間分界線上,之前是加載的是單機(jī)和聯(lián)機(jī)版通用的基礎(chǔ)內(nèi)容,之后是聯(lián)機(jī)版獨(dú)有的內(nèi)容。

可以看到,聯(lián)機(jī)版GTA 5,加載時(shí)調(diào)用大量CPU資源至少長(zhǎng)達(dá)4分鐘之久,而同時(shí),內(nèi)存、GPU、硬盤的使用情況幾乎沒(méi)有明顯變化。

所以,問(wèn)題大概率出在代碼上。

黑客大哥說(shuō):

我聞到一股爛代碼的味道…..

為了找出到底那一部分程序卡住了CPU,他使用了工具Luke Stackwalker,對(duì)CPU任務(wù)堆棧進(jìn)行采樣分析。

沿著調(diào)用棧往下走,發(fā)現(xiàn)問(wèn)題出在一個(gè)sskanf函數(shù)上。

sskanf的功能是讀取格式化的字符串中的數(shù)據(jù),而在GTA 5中,它正在讀取的是一個(gè)10M左右,有63000多個(gè)條目的JSON文件。

這個(gè)文件到底是干什么用的?黑客大哥推測(cè),這可能是游戲內(nèi)購(gòu)商店的相關(guān)內(nèi)容

再看第二個(gè)問(wèn)題,這是一個(gè)存儲(chǔ)命令,對(duì)象是item,具體是什么不得而知。

但是保存前,有一個(gè)if語(yǔ)句,逐一比較item內(nèi)項(xiàng)目的哈希值,檢查它們是否出現(xiàn)在某一列表中。

按照他計(jì)算,這一步if,要執(zhí)行(63000^2+63000)/2 = 1984531500次!

沒(méi)錯(cuò),等待加載前的十多分鐘里,GTA 5用你的CPU,執(zhí)行了19.8億次if命令...

如此簡(jiǎn)單粗暴的編程思路,讓這位老哥哭笑不得:

既然對(duì)象有唯一哈希值,那為什么不用hash map???

至于R星為什么不修正,有網(wǎng)友推測(cè),最開(kāi)始,if的循環(huán)次數(shù)并沒(méi)有這么多,而是隨著開(kāi)發(fā),條目不斷增多,最后到了積重難返的地步。

而之前的代碼結(jié)構(gòu),誰(shuí)也不愿意去動(dòng)。

就是這樣一個(gè)低級(jí)的失誤,讓全球玩家至今每次打開(kāi)游戲,都要上演一遍19.8億次的if循環(huán)…

這是不是堪稱游戲開(kāi)發(fā)史上最意外的“屎山”代碼?

如何沖掉“屎山”

第一個(gè)問(wèn)題,黑客大哥采用hook大法,不一一讀取字符串,而是:

hook strlen

“緩存 “字符串起始和當(dāng)前長(zhǎng)度。

如果在字符串范圍內(nèi)函數(shù)在此被調(diào)用,返回緩存的值

至于if語(yǔ)句問(wèn)題,就更直接了——完全跳過(guò)重復(fù)檢查,利用hash map插入項(xiàng)目,因?yàn)檫@些值是唯一的。

最后的結(jié)果如下:

現(xiàn)在,GTA5聯(lián)機(jī)版加載,從原來(lái)的6分鐘,下降到現(xiàn)在的1分50秒!

而且,他用的還是七八年前的硬件配置。CPU,是老而彌堅(jiān)的AMD FX-8350,2012年上市,采用“推土機(jī)”架構(gòu),超頻潛力驚人。而顯卡,還是GTX 1070。

隨后他將修改好的代碼打包,上傳到了Github,免費(fèi)供玩家下載。

但是,他也提醒玩家,私自改動(dòng)游戲文件,可能有被封號(hào)的風(fēng)險(xiǎn)。他本人也面臨潛在的法律風(fēng)險(xiǎn)。

所以,他無(wú)論在博客還是GitHub上,都沒(méi)有留下任何身份信息。

黑客大哥提前拿了一筆“年終獎(jiǎng)”

但是現(xiàn)在黑客大哥不用擔(dān)心了。

因?yàn)?,這篇揭R星老底的帖子在全網(wǎng)大火,R星不得不出面應(yīng)對(duì)。

在和他聯(lián)系后,R星認(rèn)可了他的改進(jìn)方法,宣布在后續(xù)更新中修復(fù)相關(guān)問(wèn)題,并且還慷慨的給他付了一筆1萬(wàn)美元的獎(jiǎng)金。

“事了拂衣去,不留功與名”,這位黑客大哥被無(wú)數(shù)玩家膜拜。當(dāng)然大家也不忘再把R星拖出來(lái)“鞭尸”。

有人吐槽,GTA 5僅2020年就買了2000萬(wàn)份,累計(jì)銷量更是達(dá)到1.4億份,R星每年都能從這個(gè)項(xiàng)目上賺數(shù)億美元,但是卻不肯花幾分鐘去解決這么一個(gè)低級(jí)錯(cuò)誤,實(shí)在可恥。

還有人抨擊R星幾乎從不與玩家社區(qū)互動(dòng),玩家提的意見(jiàn)也從來(lái)充耳不聞,直到這次被被黑客嘲諷打臉,才不得不出來(lái)表態(tài)。

事后,黑客大哥還透露了一絲身份信息,原來(lái)他人在拉脫維亞。

拉脫維亞是波羅的海國(guó)家,原來(lái)是前蘇聯(lián)加盟國(guó)之一。在網(wǎng)上搜索相關(guān)信息,可以發(fā)現(xiàn)“拉脫維亞黑客”,幾乎是和俄羅斯黑客一樣傳奇神秘的存在。

有網(wǎng)友爆料,在拉脫維亞,普通程序員工資平均3-4k歐元(23000-31000人民幣)。

而他領(lǐng)到的這1萬(wàn)美元獎(jiǎng)金,相當(dāng)于三四個(gè)月工資了。

提前領(lǐng)了一筆“年終獎(jiǎng)”,黑客大哥表示很開(kāi)心。同時(shí)他也說(shuō),將密切關(guān)注GTA 5未來(lái)更新,一絲不茍的檢查修復(fù)情況。

不知道他還能不能從R星領(lǐng)走更多獎(jiǎng)金。

參考鏈接https://news.ycombinator.com/item?id=26469753

(聲明:本文僅代表作者觀點(diǎn),不代表新浪網(wǎng)立場(chǎng)。)

分享到:
保存   |   打印   |   關(guān)閉