最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

初探.net Native AOT(上)

2023-07-19 20:33 作者:HB_LW  | 我要投稿

大家好啊,因?yàn)楦鞣N各樣的原因,已經(jīng)很久沒有更新了,主要是感覺自己水平太低了沒啥東西講的(其實(shí)是懶??)。

本文主要參考:

hez2010大佬的,通過 .NET NativeAOT 實(shí)現(xiàn)用戶體驗(yàn)升級(jí)https://zhuanlan.zhihu.com/p/353853076

nscript大佬使用 C# 進(jìn)行AI工程開發(fā)-基礎(chǔ)篇(二):NativeAOThttps://zhuanlan.zhihu.com/p/638859407


文章對(duì)應(yīng)視頻不日后上傳。

回到今天的主題,什么是Native AOT?

Publishing your app as native AOT produces an app that's self-contained and that has been ahead-of-time?(AOT)?compiled to native code.?Native AOT apps have faster startup time and smaller memory footprints.?These apps can run on machines that don't have the?.NET runtime installed.

根據(jù)微軟的文檔,native AOT生成一個(gè)經(jīng)過AOT編譯導(dǎo)原生代碼的獨(dú)立應(yīng)用,有更快的啟動(dòng)速度和更小的內(nèi)存占用,可以不用安裝.net運(yùn)行時(shí)即可運(yùn)行。

總得來說, native AOT有以下一些優(yōu)點(diǎn)

  • 啟動(dòng)時(shí)間短

  • 應(yīng)用體積小

  • 內(nèi)存占用低

  • 無需運(yùn)行時(shí)

  • 防止反編譯

以僅輸出HelloWorld的控制臺(tái)程序?yàn)槔?/p>

| HelloWorld | Native AOT | ?JIT ? | JIT(Trim&Compress) |
|:----------:|:----------:|:------:|:------------------:|
| ? ?文件大小 ? ?| ? ? 3M ? ? | 66.8M ?| ? ? ? 10.3M ? ? ? ?|
| ? ?運(yùn)行時(shí)間 ? ?| ? 25.9ms ? | 81.5ms | ? ? ?127.4ms ? ? ? |
| ? ?內(nèi)存占用 ? ?| ? 22.86M ? | 35.86M | ? ? ? 32.20M ? ? ? |


注意: AOT并不意味著運(yùn)行快,有時(shí)運(yùn)行效率AOT < JIT


AOT不是銀彈,享受性能的優(yōu)勢(shì)也伴隨著開發(fā)上的限制

  • 反射泛型不利

  • 支持平臺(tái)有限

  • 編譯時(shí)間增加

  • 交叉編譯困難

NATIVE AOT適合的一些場(chǎng)景

  • Cloud、Serverless

  • 代碼不公開防止反編譯

  • C-style SDK開發(fā)

  • 某些特殊場(chǎng)景

Native AOT的使用

在.csproj設(shè)置中添加以下代碼


或者使用命令行參數(shù)-p:PublishAot=true


CLI發(fā)布

更激進(jìn)的裁剪策略

  • StripSymbols:去除調(diào)試符號(hào)到.pdb文件,很重要,不設(shè)置將帶來很大的體積。

  • InvariantGlobalization:不使用國際化。

以上兩個(gè)屬性基本必開,對(duì)項(xiàng)目影響較小。接下來的參數(shù)設(shè)置可能會(huì)導(dǎo)致程序無法按照預(yù)期工作,請(qǐng)謹(jǐn)慎設(shè)置。

  • IlcOptimizationPreference:`Speed/Size`,優(yōu)化偏好。

  • IlcFoldIdenticalMethodBodies:折疊相同字節(jié)的方法體,更小的體積,但導(dǎo)致stacktrace不可讀。

  • IlcGenerateStackTraceData:生成堆棧追蹤數(shù)據(jù)。

  • IlcTrimMetadata:裁剪反射元數(shù)據(jù),反射類型只在部分設(shè)置中可見。

  • IlcDisableReflection:禁用反射。

  • IlcSystemModule:禁用System.Private.CoreLib和其它庫的自動(dòng)引用。

處理泛型和反射

  1. 使用SourceGenerator代替反射在編譯時(shí)而非運(yùn)行時(shí)生成代碼

  2. 編寫rd.xml指導(dǎo)正確裁剪

這部分的內(nèi)容我們放在項(xiàng)目實(shí)例中進(jìn)行說明


初探.net Native AOT(上)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
额济纳旗| 光泽县| 永登县| 桦甸市| 高邮市| 石狮市| 舒城县| 长宁区| 海林市| 侯马市| 谷城县| 滕州市| 阳朔县| 兰考县| 江城| 万全县| 肇源县| 大石桥市| 纳雍县| 中江县| 方山县| 东乡族自治县| 丰都县| 乐业县| 伊吾县| 开封市| 合阳县| 砚山县| 库伦旗| 湘阴县| 通许县| 惠州市| 陈巴尔虎旗| 天门市| 精河县| 于田县| 延安市| 莎车县| 正宁县| 襄垣县| 临海市|