{eval=Array;=+count(Array);}
我們已經(jīng)上線了好幾個.net core的項目,基本上都是docker+.net core 2/3。說實話,
.net core的GC非常的優(yōu)秀,基本上不需要像做Java時候,還要做很多的優(yōu)化。因此沒有多少人研究很正常。換句話,如果一個GC還要做很多優(yōu)化,這肯定不是好的一個GC。當然平時編程的時候,常用的非托管的對象處理等等還是要必須掌握的。
這和國內(nèi)的開發(fā)環(huán)境有很大關(guān)系。
一方面,這里有個路徑依賴的問題,這個問題在國內(nèi)尤為突出。這幾年,國內(nèi)其他語言的開發(fā)者多一些,生態(tài)好一些,轉(zhuǎn)換則意味著成本。
另一方面,浮躁之風過盛,拿來主義盛行。這里舉兩個例子來說明。一個是國產(chǎn)操作系統(tǒng)的內(nèi)核問題。為什么要使用linux內(nèi)核而不是重新寫一個呢?給出的理由無非是linux生態(tài)好,穩(wěn)定,沒有必要進行重復制作。真的沒必要嗎?那國外為什么流行要用rust重新寫幾個,而且開源呢?“沒必要”是假,“不想”才是真,畢竟基礎(chǔ)建設(shè)周期長,成本高,沒有拿來主義好呀。另一個例子是最近matlab在國內(nèi)停止授權(quán)的事情。在這件事情上,很多人都覺得問題不大,問題不大的原因在于還有一個開源的scilab可以拿來用。
舉這兩個例子,也許不太妥切,但是,管中窺豹,略見一斑,也足以說明時下的浮躁氛圍了。
既然這里說到net core底層問題,今年新出的《.NET Core底層入門》,也許值得一讀。這是國內(nèi)的研究者寫的,從中可以看出國內(nèi)在這方面的進展,也說不定。總而言之,雖然net core已經(jīng)開源了幾年,但是在國內(nèi),開發(fā)者的成長和生態(tài)的建設(shè),還需要更長的時間。
微軟的產(chǎn)品化能力是有目共睹的,.net比起JAVA體系,更加完善,包括產(chǎn)品本身和后期的維護都比JAVA好,所以商業(yè)化項目最好還是用. net平臺。
這似乎挺正常的,如同它購買了GitHub后,眾開源項目就紛紛遷移GH。開源社區(qū)普遍不信任微軟,其意定非在開源本身。.Net 開源估計也是市場占有率在降,沒人真心愿意用它。
不只是netcore,golang,rust等等很多語言都沒有好多人研究gc,所以這個問題應該問,為什么jvm會有很多人研究。
簡單的回答是,jvm的歷史負擔太沉重,Java社區(qū)對jvm的改進十分的保守,新的特性必須要保持向下兼容,導致只能從gc入手優(yōu)化性能。而netcore不一樣,微軟主導的netcore社區(qū)對clr的改進激進的多,新特性很多情況下是不會向下兼容的,性能優(yōu)化可以在clr中解決掉,自然就不會過多關(guān)注gc了
.net core,哪里還需要什么GC優(yōu)化?那是jvm天生缺陷導致的問題。.net 5再性能上更進一步,只要你的程序不是寫得稀爛,根本不用操心底層運行時的性能會出問題。
不能用jvm的眼光看.net,java界已經(jīng)進入固步自封的狀態(tài),版本更新那么快,實質(zhì)性的東西并沒有什么突破。而很多公司堅守在java1.6上不放手,實在頑固。
優(yōu)化肯定是需要的,再好的程序都是有優(yōu)化空間的。只是現(xiàn)在dotnet平臺上目前缺少大型的應用。正常的業(yè)務(wù)場景下,難以達到框架性能的瓶頸。
dotnet 雖然開源了,但是開源太晚。要是早幾年,在Android興起之前,在大數(shù)據(jù)興起之前,現(xiàn)在還會是這般場景嗎。眼看著國內(nèi)的大企業(yè)一波波地轉(zhuǎn)向了Java和其他語言,作為一名dotnet程序員心里是大大的不甘心。
dotnet 在語言層面相比 Java 有太多優(yōu)勢,Java 新版新增的一些語言特性也都是照抄的 dotnet。但即便是這樣,依然是叫好不叫座。
開源太晚,錯過了幾波行業(yè)發(fā)展紅利。以至于現(xiàn)在,大數(shù)據(jù)領(lǐng)域缺 Hadoop,搜索領(lǐng)域缺 Elasticsearch ,移動端雖有xamarin,但依然是雞肋般的存在。要是有這些殺手級應用在,dotnet 生態(tài)肯定會繁榮起來,向著更強的方向優(yōu)化。
還能說什么呢,只能期望即將到來的dotnet 5 能一統(tǒng)現(xiàn)在混亂的局面,發(fā)揮好自己的特長,繁榮dotnet的生態(tài)環(huán)境。
首先.net的原裝GC一直都不錯。流暢到可以支持3D游戲開發(fā)。所以不怎么需要調(diào)優(yōu)。要知道文章多不用不一定是好事,95%的技術(shù)文章其實只不過是要解決一個BUG而已。其次C#的語法和運行時設(shè)計也好,對GC的壓力小很多。比如范性支持基本類型,這樣List<int>之類的結(jié)構(gòu),是整體分配和釋放的。而某蛙就需要每個元素拆箱裝箱。慢死,對GC來說也要算更多的引用鏈。此外C#還支持matrx4x4之類的SIMD數(shù)據(jù)類型。也是提高運行速度和減少GC的好東西
0
回答0
回答0
回答0
回答10
回答0
回答5
回答0
回答0
回答0
回答