游戲編程:為什么C++游戲開發比Java更好,其實是因為這兩個點!


游戲開發是一個比較廣泛的話題,說哪種語言更好其實不合適,應該是那種語言更適合那種層次的處理。

在進行數據量比較大的游戲開發時,更占優勢的無疑是C++這門編程語言!之所以這樣講,以我的經驗來看主要是兩個方面!

幾年前,我用Java編寫了一個過程3D建模應用程序,該程序能夠處理數百萬個多邊形,它使用了智能分區系統,該系統生成線程以最佳利用所有CPU內核,如此繁重。


 

我可以肯定地說,Java,甚至C#進行海量數據計算的最大問題不是該語言解釋的實際速度(但是這些語言的速度幾乎與C++一樣快),但是內存管理和垃圾回收是影響游戲的關鍵因素。

《2021最新C/C++編程學習路線和視頻教學》

缺乏對內存的控制權,導致軟件消耗過多的內存,同時產生由垃圾收集器引起的不規則的滯后。

當有足夠的可用內存時,軟件會平穩運行,但是達到限制(無論保留的內存塊大小如何,都會達到限制)時,用戶會遇到滯后,可能需要幾分之一秒甚至幾秒鍾的時間,這是非常糟糕的。


 

由於缺乏對內存的控制,因此內存管理器有時會保存巨大的內存塊,您知道這些內存塊將永遠不會再被使用,並且無法像C++中那樣立即強制釋放這些內存塊。

結果是該軟件的內存效率非常低。

自動垃圾收集系統對數據沒有更高的語義理解,因此它使用在大多數情況下“最佳”工作的策略,但是這種策略效率很低。

在C++中,你可以根據特定用途分配和釋放內存塊,並使內存管理更有效。但是,您需要自己完成所有工作,並且搞砸的可能性更大,這會對C++產生致命的后果。

希望將來的垃圾回收器實現方案,以實現對內存的更多控制。還可以使用自定義內存管理器自行完成所有操作,但這將是一個不切實際的解決方案,但值得考慮。


 

但是當需要為GPU提供海量數據並最大程度地優化所有內容時,最好使用C或C ++直接運行代碼,這可以給您更多的控制權,並使您可以更好地優化代碼的性能敏感部分。


 

不幸的是,作為Unity開發人員,我可以告訴您,當您需要使用C#執行對性能敏感的計算時,可能會遇到這種情況,這可能表明該語言的局限性。

但是,您可以在應用程序中使用自定義內存管理器,並明智地設計代碼,以使其更容易在語言解釋器中更有效地運行,從而獲得良好的性能,但是有時用C / C ++編寫敏感部分可能會更好。

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


 

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~

【值得關注】我的 C/C++編程學習交流俱樂部!【點擊進入】

問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM