摘要:
1.前言 大部分人對于.Net性能優化,都停留在業務層面?;蛘吆唵蔚?Net框架配置層面。本篇來看下.Net核心部分GC垃圾回收配置:保留VM,大對象,獨立GC,節省內存等.Net8里面有很多的各種GC配置,用以幫助你的程序進行最大程度性能提升和優化。 文章分為兩部分,第一個是GC有哪些動作可以性能 閱讀全文
摘要:
1.前言 CLR和GC高度耦合,.Net7里面分離CLR和GC,則比較容易實現這件事情。本篇來看下,自定義一個GC垃圾回收器。 2.概述 這里首先演示下自定義GC垃圾回收后的效果。 1.下載Custom.dll 2.找到當前.Net目錄,比如這里的7.0.10 C:\Program Files\do 閱讀全文
摘要:
# 前言 因為目前從事的CLR+JIT,所以會遇到一些非常底層的問題,比如涉及到微軟的公共運行時和即時編譯器或者AOT編譯器的編譯異常等情況,這里分享下自己提的幾個Issues。原文:[微軟.Net runtime運行時提交的幾個Issues](https://mp.weixin.qq.com/s? 閱讀全文
摘要:
# 前言 .Net8的本地預編機器碼AOT,它幾乎進行了100%的自舉。微軟為了擺脫C++的鉗制,做了很多努力。也就是代碼幾乎是用C#重寫,包括了虛擬機,GC,內存模型等等。而需要C++做的,也就僅僅是引導程序,本篇通過代碼來看下這段至關重要的引導程序的運作模式。原文:[.Net8的AOT引導程序B 閱讀全文
摘要:
# 前言 委托在.Net里面被托管代碼封裝了之后,看起來似乎有些復雜。但是實際上委托即是函數指針,而多播委托,即是函數指針鏈。本篇來只涉及底層的邏輯,慎入。 # 概括 **1.示例代碼** `````````` public delegate void ABC(); //委托寫在類的外面 publi 閱讀全文
摘要:
目前龍芯通過自己的指令集LA64支持了.Net7.0.1版本,一同被支持的有Ruby,Nodejs,Java,Electron,Python等。原文:[在此處](https://mp.weixin.qq.com/s?__biz=Mzg5NDYwNjU4MA==&mid=2247484873&idx= 閱讀全文
摘要:
因為前幾天做.Net7的矢量化性能優化,發現了一個bug。在類System.Numerics.Vector里面的成員變量IsHardwareAccelerated。但是實際上不確定這個bug是visual studio 2022的還是System.Numerics.Vector庫的,個人認為應該是前 閱讀全文
摘要:
# 前言 這個var和dynamic都是不確定的初始化類型,但是這兩個本質上的不同。不同在哪兒呢?var編譯階段確定類型,dynamic運行時階段確定類型。這種說法對不對呢?本篇看下,文章原文地址:[在這里](https://mp.weixin.qq.com/s?__biz=Mzg5NDYwNjU4 閱讀全文
摘要:
# 前言 IR技術應用在各個編程語言當中,它屬于JIT的核心部分,確實有點點麻煩。但部分基本明了。本篇通過.Net8里面的邊界檢查的小例子了解下。前情提要,看這一篇之前建議看看前一篇:[點擊此處](https://mp.weixin.qq.com/s?__biz=Mzg5NDYwNjU4MA==&m 閱讀全文
摘要:
前言: 本篇以.Net 7.0.2 CLR 和 OpenJDk19參照,解析下它們各自調用函數的異同。 以下為個人理解。 概述 JDK大約5.9G,CLR大約7.6G,兩者相差1.7G左右。 root@tang-virtual-machine:/home/tang# cd jdk-jdk-19-36 閱讀全文