原创 .NET8 AOT和JIT的性能,誰更高呢?

一: 有人問:.NET8 AOT和JIT的性能,誰更高呢? 原文:.NET8 AOT和JIT的性能,誰更高呢? 其實這個答案非常明顯,那就是JIT的性能更高。爲什麼?原因在哪?因爲JIT是隨時可能分層編譯,動態PGO,CHRL,Non GC

原创 .NET8頂級調試lldb觀察FOH堆字符串分配

前言 好久沒有動用LLDB了,本篇通過它來看下FOH也就是.NET8裏面優化字符串,爲了提高其性能增加的FOH堆分配過程。關於FOH可以參考:.NET8極致性能優化Non-GC Heap 詳細 來看一個簡單的例子: public stati

原创 .NET8極致性能優化AOT

前言 .NET8對於性能的優化是方方面面的,所以AOT預編譯機器碼也是不例外的。本篇來看下對於AOT的優化。原文:.NET8極致性能優化AOT 詳述 首先明確一個概念,.NET裏面的AOT它是原生的。什麼意思呢?也就是說通過ILC編譯器(A

原创 .NET8極致性能優化CHRL

前言 .NET8在.NET7的基礎上進行了進一步的優化,比如CHRL(全稱:CORINFO_HELP_RNGCHKFAIL)優化技術,CORINFO_HELP_RNGCHKFAIL是邊界檢查,在.NET7裏面它已經進行了部分優化,但是.NE

原创 .NET8極致性能優化Non-GC Heap

前言 .NET8裏面JIT引入了一個新的機制,叫做Non-GC Heap。JIT可以確保相關對象分配在Non-GC Heap上,該堆像其名稱一樣,不受GC管理。JIT需要保證這個對象沒有被GC引用,並且在這個對象的生命週期內一直是根對象(不

原创 .Net核心級的性能優化(GC篇)

1.前言 大部分人對於.Net性能優化,都停留在業務層面。或者簡單的.Net框架配置層面。本篇來看下.Net核心部分GC垃圾回收配置:保留VM,大對象,獨立GC,節省內存等.Net8裏面有很多的各種GC配置,用以幫助你的程序進行最大程度性能

原创 .Net7自定義GC垃圾回收器

1.前言 CLR和GC高度耦合,.Net7裏面分離CLR和GC,則比較容易實現這件事情。本篇來看下,自定義一個GC垃圾回收器。 2.概述 這裏首先演示下自定義GC垃圾回收後的效果。 1.下載Custom.dll 2.找到當前.Net目錄,比

原创 Python/Java/Php/C#/Go/C/C++這幾個主力語言,誰到底真的不行

1.前言 阿里最近又進行了史詩級的大裁員,IT行業肉眼可見的持續性衰退與沒落。當潮水退卻,才能看出誰在裸泳。作爲當今計算機編程界的幾大主力語言,誰才真正的裸泳者呢?引用原文:這幾個主力語言,誰到底真的不行 2.描述 1.Python: Py

原创 .Net8 AOT+VMP簡單的逆向分析

1.前言 測試下VMP加密.NET的強度,選了最新的.Net8+AOT編譯,用VMP給它加殼。最後逆向下,簡單的分析,本篇看下。 2.概述 一.前奏 首先一段簡單的C#代碼: namespace Test_{ internal cl

原创 給微軟.Net runtime運行時提交的幾個Issues

前言 因爲目前從事的CLR+JIT,所以會遇到一些非常底層的問題,比如涉及到微軟的公共運行時和即時編譯器或者AOT編譯器的編譯異常等情況,這裏分享下自己提的幾個Issues。原文:微軟.Net runtime運行時提交的幾個Issues I

原创 .Net Framework下面如何生成AOT呢?

前言 有人問,老版本的.net frameworker能不能生成AOT?其實AOT預編譯,在.Net FrameWorker1.0裏面就有了。它叫做Ngen,只不過當時叫做生成本機映像,實際上還是一個東西,也就是預編譯。本篇來看下。原文:.

原创 .Net8的AOT引導程序BootStrap

前言 .Net8的本地預編機器碼AOT,它幾乎進行了100%的自舉。微軟爲了擺脫C++的鉗制,做了很多努力。也就是代碼幾乎是用C#重寫,包括了虛擬機,GC,內存模型等等。而需要C++做的,也就僅僅是引導程序,本篇通過代碼來看下這段至關重要的

原创 C#/.Net的多播委託到底是啥?徹底剖析下

前言 委託在.Net裏面被託管代碼封裝了之後,看起來似乎有些複雜。但是實際上委託即是函數指針,而多播委託,即是函數指針鏈。本篇來只涉及底層的邏輯,慎入。 概括 1.示例代碼 public delegate void ABC(); //委託

原创 .NET7 for LoongArch64(國產龍芯)

目前龍芯通過自己的指令集LA64支持了.Net7.0.1版本,一同被支持的有Ruby,Nodejs,Java,Electron,Python等。原文:在此處 龍芯.Net7 sdk下載地址: http://ftp.loongnix.cn/t

原创 .Net7發現System.Numerics.Vector矢量化的一個bug,Issues給了dotnet團隊

因爲前幾天做.Net7的矢量化性能優化,發現了一個bug。在類System.Numerics.Vector裏面的成員變量IsHardwareAccelerated。但是實際上不確定這個bug是visual studio 2022的還是Sys