• 买彩网官网

  • 买彩网官网

  • 买彩网官网

  • 买彩网官网

买彩网官网

作者︰wy  發(fa)布ji)掌冢019-01-12 08:37:00
Tag標(biao)簽︰游戲服(fu)務端  C++編制  C++游戲  
  •   說dang)接蝸肪捅匭 檔(dang)++,他們就像是共同體(ti)一樣分不開,這篇文章就是分析C++的利與弊,然後再加以分析為何總是用C++來編寫cong)蝸房突?

      按cong)τ昧 yu)來說,C++適用于開發(fa)服(fu)務器軟件、桌面應用、游戲、實時系統chang)  閱neng)計算(suan)、嵌(qian)入式系統等(deng)。拿游戲來說,不同的游戲之間(jian)的業務邏輯和(he)適用架構也存在很大差別。比如對于大部分手(shou)游、頁游來說,追求短平快的開發(fa)節(jie)奏也不要求太高的實時性和(he)計算(suan)效率,C++在這些(xie)領域(yu)的使(shi)用屬(shu)于殺雞用牛刀。下面我就得分別說說C++和(he)其他編程語言在游戲開發(fa)上的優(you)劣勢對比︰C++︰

      網絡 IO︰歷史上這方(fang)面曾(zeng)經是qiang)劑康鬧饕 蛩兀 jin)年(nian)來幾乎所有主流後端語言都封裝有高效的網絡 IO 庫(ku),C++ 已(yi)不具備獨特優(you)勢。

      CPU 利用率︰C++ 在這方(fang)面的優(you)勢不需(xu)要討(tao)論了。

      實時性︰無 GC,內存分配延(yan)ying)倏煽內存池、預分配等(deng)),毫秒級延(yan)ying)儺xu)求的高頻(pin)交(jiao)易都在用。

      穩定性和(he)容(rong)災︰用C++寫出長期穩定運行的服(fu)務器程序,對開發(fa)團(tuan)隊而(er)言是件要求比較高的事(shi)情(qing),尤其在邏輯復雜又(you)變更頻(pin)繁的前提下。語言本身也不保證內存訪問的安全性,如果有xin)詿嫘叢澆緄賈zhi)的Crash也很難定位。國內某大廠采用了分離(li)數據和(he)邏輯進程,通過(guo)進程間(jian)共享內存來通信(xin)的方(fang)式,來實現(xian)zhi)嘸 癱beng)潰重(zhong)啟(qi)不丟失(shi)數據。不過(guo)這種做法有一定門ou)鰨 嬖諦閱neng)開銷,而(er)且對開發(fa)效率和(he)靈活性也有比較大的約束,也不易整合第三(san)方(fang)庫(ku),不能(neng)算(suan)是通用的最(zui)佳(jia)實踐。

      開發(fa)效率︰如果有良(liang)好(hao)的內力和(he)C++編程素養,並且配合現(xian)代C++的一些(xie)語法(auto、lambda、智(zhi)能(neng)指針等(deng)),開發(fa)效率尚可算(suan)是勉強(qiang)及(ji)格,但相對以下討(tao)論的其他語言來說deng)源τ諏郵疲 歡er)達(da)到上述水(shui)準的人力資源成本卻要比其它語言要高出不少(shao)(人員補充速(su)度、培訓(xun)周期和(he)薪資)。綜(zong)合而(er)言,這方(fang)面可算(suan) C++的一大短板(ban)。Java︰

      優(you)點︰

      生態圈成熟,庫(ku)豐富。

      Netty 網絡庫(ku)性能(neng)強(qiang)悍。

      不爽語法還可以用 scala 和(he) kotlin...

      缺點︰

      除了原始類型外(wai),不支(zhi)持自定義值類型。而(er)且泛型是以類型擦除的方(fang)式實現(xian)。這樣的特性導致(zhi)了︰難以把數據連續(xu)緊湊(cu)地進行表示來cong)嘔 suan)法的緩存命中率,比如2D地圖的每個格子(zi)坐標(biao)都是個object。3D 場(chang)景的踫撞體(ti)每個頂點都是個object。對原本對實時性不甚友好(hao)的 GC 造成了更大壓(ya)力。

      C++

            成熟的 JVM 實現(xian)並不怎(zen)麼側重(zhong) GC 的實時性。如果觸發(fa)了百毫秒以上的世界凍結 GC 延(yan)ying)  性諳xian)玩家都會受到影響。

      JIT 在預熱不足的情(qing)況(kuang)下,偶(ou)爾會導致(zhi)性能(neng)曲線(xian)不平jiao)  胊?現(xian) wai)的響應延(yan)ying)佟#︰

      優(you)點︰

      開發(fa)友好(hao),語法糖甜(tian)。

      有真(zhen)正的泛型和(he)值類型。特定算(suan)法好(hao)優(you)化。

      缺點︰

      微軟家的。微軟家的。微軟家的。跑在 Windows Server下沒什(shi)麼問題,然而(er)拋開授權費不談,大部分主流的開源好(hao)物(wu)都是優(you)先考慮 Unix / Linux,比如 Redis(長期沒有 Windows 版本的官方(fang)支(zhi)持)、MongoDB(Windows 下性能(neng)要弱于 Linux 下),而(er)且 Windows Server 的網絡性能(neng)也要弱一些(xie)。除非解決方(fang)案都用微軟全家桶(tong),不然部署(shu)和(he)運維就需(xu)要同時維護兩(liang)個平台...至(zhi)于 Mono,跟 JVM 比起來就像玩具。只能(neng)期待 Rosalyn 成熟了。

      GC 實時性類似 Java。Go︰

      優(you)點︰

      語法簡單易掌握。

      開發(fa)體(ti)驗友好(hao)。

      有值類型。

      新版本的 Go,GC 實時性良(liang)好(hao)(1.8 號稱 STW 控制在 1ms 以內)。

      缺點︰

      沒有範(fan)型,某些(xie)地方(fang)需(xu)要轉型成 interface{},不過(guo)編譯器會做逃逸分析,不必要的地方(fang)不會自動(dong) boxing,影響不算(suan)太嚴(yan)重(zhong)。Rust︰

      優(you)點︰

      運行效率比肩 C++。

      語言特性優(you)秀。

      編譯期保證了內存安全,沒有 GC 開銷。

      編譯期保證線(xian)程安全,可以放心(xin)大膽地並發(fa),容(rong)易寫出高效的多線(xian)程代碼。

      缺點︰

      上手(shou)曲線(xian)較陡。

      太年(nian)輕(qing),生態圈尚xing)闖墑 /p>

      較小(xiao)眾,人員補充困難。

      根據本篇文章從(cong)優(you)缺點、實用性、利用率相結合總結性發(fa)言為什(shi)麼總是使(shi)用C++來編寫cong)蝸房突?說腦 蠔he)結果。更多資訊duan)昵qing),請觀看我網站其他欄目信(xin)息,謝謝你的支(zhi)持。

买彩网官网

About IT165 -廣告服(fu)務 -新浪彩票官网隱私(si)聲明 -版權申(shen)明 -免責條款 -網站地圖 -網友投稿 -聯(lian)系方(fang)式
本站內容(rong)來自于互聯(lian)網,僅(jin)供用于網絡技術(shu)學(xue)習,學(xue)習中請遵(zun)循相關法律法規
买彩网官网 | 下一页