頭條資訊 - 為您提供最新最全的新聞資訊,每日實時更新

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

科技數碼 程序員無言

遊戲開發是一個比較廣泛的話題,說哪種語言更好其實不合適,應該是那種語言更適合那種層次的處理。在進行數據量比較大的遊戲開發是,更佔優勢的無疑是C++這門編程語言!之所以這樣講,以我的經驗來看主要是兩個方面!

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

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

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

缺乏對內存的控制權,導致軟件消耗過多的內存,同時產生由垃圾收集器引起的不規則的滯後。當有足夠的可用內存時,軟件會平穩運行,但是達到限制(無論保留的內存塊大小如何,都會達到限制)時,用戶會遇到滯後,可能需要幾分之一秒甚至幾秒鐘的時間,這是非常糟糕的。

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

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

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

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

自動垃圾收集系統對數據沒有更高的語義理解,因此它使用在大多數情況下“最佳”工作的策略,但是這種策略效率很低。在C ++中,您可以根據特定用途分配和釋放內存塊,並使內存管理更有效。但是,您需要自己完成所有工作,並且搞砸的可能性更大,這會對C ++產生致命的後果。

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

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

用Java或C#編寫代碼會產生更優美的代碼,並使您比C ++更快地開發軟件。

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

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

將Java / C#用於邏輯和管理將是一個好主意(在某些可能是大多數代碼的應用程序中)。只要您使用視頻遊戲引擎自己完成所有對性能敏感的工作,那麼使用Java或C#等託管語言就可以了,甚至完全可以。

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

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

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

希望對大家有幫助!

轉載請超鏈接註明:頭條資訊 » 遊戲編程:為什麼C+遊戲開發比Java更好,其實是因為這兩個點!
免責聲明
    :非本網註明原創的信息,皆為程序自動獲取互聯網,目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,並提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件24小時內刪除。
加載中...