惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - ProjectDD

NET 中 Async/Await 的演进:从状态机到运行时优化的 Continuation C# 指针用法小结 C# BinaryPrimitives 类 C# 内存对齐 linq 查询关于 from子句 关于C# await的一点新理解 关于排序算法 C# Dev Kit 经常导致崩溃 不太会用Span<T> 看文档上的优点估摸着试试 span,memory,ArrayPool,MemoryPool,等的性能对比 C# simd 性能雷点记录 C# 模式匹配里应该注意的几点 高中生理解梯度为何是方向导数极大值 概略 deep net 通过relu 进行函数逼近 win10 下安装 rust 的 依赖配置,通过vs2022 24个希腊字母的中文拼音版 英语发音探讨 sagemath 9.x 下的 jupyter 工作路径设置 Serializing delegates is not supported on this platform
C# 有多需要aot
ProjectDD · 2022-04-04 · via 博客园 - ProjectDD

C# 有多需要aot ?

最近看到.net7的 aot计划之后又去网上看了下相关的文章发现.net C#其实并不需要aot,原因主要有以下几点:

  1. .net生态至20年前诞生以来桌面端就一直没成功过,在濒临死亡之前可以说全靠傍上web生态起死回生的,我们知道.net core 战略从一点一点扣性能做起的,通过asp.net 做为发力点,挽救了.net 并因此将.net framework抛弃,给.net C#带来了新生机,而一直失败一直拖累的一系列技术,什么 webform, wcf,winform,wpf,silverlight,xna wwf(wf),uwp,winfone... 等却还不死心,变着面目不断表演就象一个个的小丑十分可恶,这不又折腾出什么maui,blazor这些不伦不类的东西。

  2. jit 十分重要,连当下最火的web assembly 都是走的jit路线为什么不直接到可执行文件呢? 原因很简单,得跨平台呀,跨平台的意思主要是指针对不同设备,os 和指令集而适配的东西,以后物联网发展起来以后,可以想见只会有更多的平台和设备接入到互联网的,有那么多不同的设备和平台,如果直接编译成可执行文件的话就失去了通用性,这是最大的原因,只有象微软这样的超大公司才可以做好这块,才可以做好跨平台,因为平台不同所以有各自不同的指令要求,一般小公司做不了,光靠社区也比较缺乏稳定性和可靠性。没有jit就意味着你需要把你的源代码针对不同的平台,不同的版本进行编译,光这项工作还不把开发者累死?

  3. C#是有gc语言,是严重的.net依赖也就是库依赖语言,光从这两点分析就知道根本就该死了用它去写桌面程序的心,还想到处分发方便,这是对C#最大的误用!从C#这两个特性可知道,C#根本不适合被编译成非jit的指令集,那样不仅是难度及大,而且也并不能提升C#的运行速度,最多只是启动快一点罢了。

  4. 有jit的好处,就是有runtime 有gc 这样对服务端长时间运行的程序来说,可以自动管理内存碎片,而这些优点是c,c++所不具备的,所以有文章上说,对于长时间运行的程序来说,随着时间的增加内存碎片的增长,没有runtime,jit,gc对内存管理的程序就会变慢,所以这是个优势。

综上所述所以我认为,aot 对于C#来说 并不重要,而且并不能因为aot优化后就去除jit, runtime,gc这些特征,C#的长处在于它的服务端跨平台特性。

最后我想给微软建议与其搞什么blazor不如老老实实想想看能不能搞个最简wasm 的runtime 不要加那些mvvm的东西 如果这个最简平台可以尺寸在200k左右我认为还是有市场的,总不至于写个hello world 就要2m吧 然后 这个200k的 wasm runtime 可以把gc管理交给wasm,毕竟wasm有gc 开启选项,这样一来,C#代码就可以直接给前端写东西提供给前端用了,但是仅管如此,C#的性能仍然要低于rust,这是因为就算有一个runtime 只有200k,那么它仍然要面临二次jit,一次是 runtime il => wasm,然后 wasm=> 到机器码执行,是这样的吗?这点我也不清楚,欢迎知道的朋友 指正!