五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

游戲編程:為什么C ++游戲開(kāi)發(fā)比Java更好,其實(shí)是因?yàn)檫@兩個(gè)點(diǎn)!

2020-09-21 17:06 作者:C語(yǔ)言編程__Plus  | 我要投稿

游戲開(kāi)發(fā)是一個(gè)比較廣泛的話題,說(shuō)哪種語(yǔ)言更好其實(shí)不合適,應(yīng)該是那種語(yǔ)言更適合那種層次的處理。在進(jìn)行數(shù)據(jù)量比較大的游戲開(kāi)發(fā)時(shí),更占優(yōu)勢(shì)的無(wú)疑是C++這門(mén)編程語(yǔ)言!之所以這樣講,以我的經(jīng)驗(yàn)來(lái)看主要是兩個(gè)方面!

幾年前,我用Java編寫(xiě)了一個(gè)過(guò)程3D建模應(yīng)用程序,該程序能夠處理數(shù)百萬(wàn)個(gè)多邊形,它使用了智能分區(qū)系統(tǒng),該系統(tǒng)生成線程以最佳利用所有CPU內(nèi)核。如此繁重。


我可以肯定地說(shuō),Java,甚至C#進(jìn)行海量數(shù)據(jù)計(jì)算的最大問(wèn)題不是該語(yǔ)言解釋的實(shí)際速度(您會(huì)想知道,但是這些語(yǔ)言的速度幾乎與C?++一樣快),但是內(nèi)存管理和垃圾回收是影響游戲的關(guān)鍵因素。

缺乏對(duì)內(nèi)存的控制權(quán),導(dǎo)致軟件消耗過(guò)多的內(nèi)存,同時(shí)產(chǎn)生由垃圾收集器引起的不規(guī)則的滯后。當(dāng)有足夠的可用內(nèi)存時(shí),軟件會(huì)平穩(wěn)運(yùn)行,但是達(dá)到限制(無(wú)論保留的內(nèi)存塊大小如何,都會(huì)達(dá)到限制)時(shí),用戶會(huì)遇到滯后,可能需要幾分之一秒甚至幾秒鐘的時(shí)間,這是非常糟糕的。


由于缺乏對(duì)內(nèi)存的控制,因此內(nèi)存管理器有時(shí)會(huì)保存巨大的內(nèi)存塊,您知道這些內(nèi)存塊將永遠(yuǎn)不會(huì)再被使用,并且您無(wú)法像C?++中那樣立即強(qiáng)制釋放這些內(nèi)存塊。

結(jié)果是該軟件的內(nèi)存效率非常低。

自動(dòng)垃圾收集系統(tǒng)對(duì)數(shù)據(jù)沒(méi)有更高的語(yǔ)義理解,因此它使用在大多數(shù)情況下“最佳”工作的策略,但是這種策略效率很低。在C?++中,您可以根據(jù)特定用途分配和釋放內(nèi)存塊,并使內(nèi)存管理更有效。但是,您需要自己完成所有工作,并且搞砸的可能性更大,這會(huì)對(duì)C?++產(chǎn)生致命的后果。


在Java?/?C#中,您實(shí)際上不必關(guān)心。這是一個(gè)懶惰的程序員功能,但這是一種更安全的方法。我希望看到將來(lái)的垃圾回收器實(shí)現(xiàn)方案,以實(shí)現(xiàn)對(duì)內(nèi)存的更多控制。您還可以使用自定義內(nèi)存管理器自行完成所有操作,但這將是一個(gè)不切實(shí)際的解決方案,但值得考慮。

用Java或C#編寫(xiě)代碼會(huì)產(chǎn)生更優(yōu)美的代碼,并使您比C?++更快地開(kāi)發(fā)軟件。


但是當(dāng)需要為GPU提供海量數(shù)據(jù)并最大程度地優(yōu)化所有內(nèi)容時(shí),最好使用C或C?++直接運(yùn)行代碼,這可以給您更多的控制權(quán),并使您可以更好地優(yōu)化代碼的性能敏感部分。

將Java?/?C#用于邏輯和管理將是一個(gè)好主意(在某些可能是大多數(shù)代碼的應(yīng)用程序中)。只要您使用視頻游戲引擎自己完成所有對(duì)性能敏感的工作,那么使用Java或C#等托管語(yǔ)言就可以了,甚至完全可以。


不幸的是,作為Unity開(kāi)發(fā)人員,我可以告訴您,當(dāng)您需要使用C#執(zhí)行對(duì)性能敏感的計(jì)算時(shí),可能會(huì)遇到這種情況,這可能表明該語(yǔ)言的局限性。

但是,您可以在應(yīng)用程序中使用自定義內(nèi)存管理器,并明智地設(shè)計(jì)代碼,以使其更容易在語(yǔ)言解釋器中更有效地運(yùn)行,從而獲得良好的性能,但是有時(shí)用C?/?C?++編寫(xiě)敏感部分可能會(huì)更好。

另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程,以便更好從事編程類工作(游戲開(kāi)發(fā))的話!那么你很幸運(yùn)~

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!


學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來(lái)成長(zhǎng)!
另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~


游戲編程:為什么C ++游戲開(kāi)發(fā)比Java更好,其實(shí)是因?yàn)檫@兩個(gè)點(diǎn)!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
苏尼特左旗| 敦煌市| 汝南县| 宿迁市| 宜兴市| 新昌县| 涟源市| 韶关市| 临武县| 胶州市| 高要市| 厦门市| 桃源县| 邢台县| 秦安县| 汕尾市| 阳信县| 牙克石市| 博乐市| 冕宁县| 深圳市| 磐安县| 固镇县| 晋中市| 邛崃市| 林口县| 额济纳旗| 苗栗县| 巫溪县| 五原县| 遵义市| 梨树县| 金堂县| 都匀市| 鄂托克前旗| 庆阳市| 千阳县| 冀州市| 方城县| 岳池县| 广元市|