纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

8KB的C贪吃蛇游戏热点答疑和。NET7版本

5月1日 菩提门投稿
  在之前的一篇文章《看我是如何用C编写一个小于8KB的贪吃蛇游戏》中,介绍了在。NETCore3。0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,主要是下面这几个方面:
  。NETCore3。0可以做到这么小,那么。NET7表现会不会更好?
  不敢在生产中用这样的方式,我看CoreRT这个仓库我看已经归档了。
  这样子弄太麻烦了,有没有更简单的办法?
  今天笔者就给大家一一解答这些问题。。NET7下的贪吃蛇游戏
  我们知道在。NET7中已经发布了NativeAOT正式的支持,经过。NET5、。NET6的迭代,NativeAOT已经基本成熟可用,那么在。NET7中重新编译这个游戏,有没有什么进步呢?让我们来看一看。
  有外网条件的朋友可以看下方的这个GITHUB链接的代码,这个代码就是提交了升级。NET7NativeAOT的实现:https:github。comMichalStrehovskySeeSharpSnakepull24使用。NET7单文件发布为了达到我们的目的,对于这个项目的csproj文件需要有一些小的改动。首先就是将对应的TargetFramework修改为net7。0版本。
  此时就已经完成。NETCore3。1到NET7。0的迁移了,我们运行下面的命令,可以获得一个65MB大小的程序,这个和之前。NETCore3。1没有什么区别。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasespan开启ILLinker
  另外后面的。NET版本支持更好的程序集剪裁,也就是ILLinker工具,我们运行命令行时p:PublishTrimmedtrue选项就可以启用。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasep:PublishTrimmedspanstyleboxsizing:spantruespan此时我们可以发现,只有11MB大小了,比。NETCore3。0时代的25MB降低了一半多。使用NativeAOT功能然后我们就要开始使用。NET7的NativeAOT功能,需要在项目文件中加入PublishAottruePublishAot选项。我们加入了一个条件,在平时不开启,只有输入不同Mode的时候才开启。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasep:Modespanstyleboxsizing:spanNativeAOTspan此时可以获得一个2。86MB大小的程序,比。NETCore3。0时代的4。7MB要小了快一半。使用Moderate模式继续修改csproj文件,让它支持Moderate模式,也就是使用IlcGenerateCompleteTypeMetadatafalseIlcGenerateCompleteTypeMetadata不生成完整的类型元数据,另外也用IlcOptimizationPreferenceSizeIlcOptimizationPreference让编译器为程序大小进行优化,而不是速度。由于后面的模式也需要支持这个,所以加入了很多条件编译的选项。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasep:Modespanstyleboxsizing:spanNativeAOTModeratespan结果和上面的一样的2。86MB,也就是说现在NativeAOT应该默认就是Moderate模式。进一步移除无关数据
  接下来我们进一步移除无关的数据。
  使用EventSourceSupportfalseEventSourceSupport关闭对EventSource的支持
  使用UseSystemResourceKeystrueUseSystemResourceKeys删除System。程序集的异常消息。
  使用InvariantGlobalizationtrueInvariantGlobalization删除全球化特定的代码和数据。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasep:Modespanstyleboxsizing:spanNativeAOTHighspan此时我们再次发布,可以看到大小已经降低到了2。15MB,比。NETCore3。0时的3。0MB降低了快30。继续移除无关数据
  通过IlcGenerateStackTraceDatafalseIlcGenerateStackTraceData移除堆栈跟踪数据
  通过IlcInvariantGlobalizationtrueIlcInvariantGlobalization移除其它语言的支持
  通过IlcFoldIdenticalMethodBodiestrueIlcFoldIdenticalMethodBodies将相同的方法体进行合并。只为我们省下了几百KB,此时大小来到了1。88MB。关闭反射接下来我们可以继续使用IlcDisableReflectiontrueIlcDisableReflection来关闭反射,移除掉一些反射的元数据。spanstyleboxsizing:display:lineheight:1。3;dotnetpublishspanstyleboxsizing:rspanwinx64spanstyleboxsizing:cspanReleasep:Modespanstyleboxsizing:spanNativeAOTReflectionFreespan关闭反射后,大小来到了1。21MB,这应该是不用骚操作能达到的最小大小了。和。NETCore3。0的对比
  下图是。NET7和。NETCore3。0在不同模式下大小的对比,可以看到经过。NET5。0、。NET6。0的发展,NativeAOT变得更加成熟了。模式。NETCore3。0。NET7。0幅度单文件发布65MB65MB0ILLinker剪裁25MB11MB56NativeAOT4。7MB2。86MB40NativeAOTHigh3。0MB1。88MB38关闭反射1。21MB1。21MB0关于CoreRT
  在博客园的评论中,看到有一位朋友留言,说不敢在生产环境中使用,而且CoreRT已经归档。其实大可放心的使用,CoreRT关闭的原因也正如下面链接仓库里面说的一样,是代码已经合并到runtimelabnativeaot项目中。https:github。comdotnetcorert
  而NativeAOT已经从实验室中毕业,合并到dotnetruntime中了,也就是。NET7看到的PublishAot选项,可以关注下面的微软文档。https:learn。microsoft。comzhcndotnetcoredeployingnativeaotNoRuntime用起来很折腾
  另外看到评论区大家吐槽的点就是后面那些骚操作看起来很麻烦,有没有更简单的方式?这个其实是有的,上篇文章的作者推出了bflat这个项目。
  bflat是Roslyn(生成。NET可执行文件的官方C编译器)和NativeAOT(neCoreRT)的混合物,NativeAOT(neCoreRT)是基于CoreCLR的。NET的提前编译器。因此,您可以使用高性能CoreCLRGC和本机代码生成器(RyuJIT)访问最新的C功能。
  bflat将两个组件合并到一个用于C的提前交叉编译器和运行时中。bflat目前可以针对:
  x64arm64基于glibc的Linux(x64(CentOS7)上为2。17或更高版本,arm64(Ubuntu18。04)上为2。27或更高版本)
  arm64基于bionic的Linux(AndroidAPI级别21)
  x64arm64Windows(Windows7或更高版本)
  x64UEFI(仅适用于stdlib:zero)
  对基于musl的Linux的支持正在开发中。bflat可以生成本机可执行文件,也可以生成可通过FFI从其他语言调用的本机共享库,下面是它的开源地址:https:github。combflattenedbflat
  使用NoRuntime模式最小可以做到4KB大小,而且支持无操作系统裸机UEFI启动。总结
  我们可以惊喜的看到NativeAOT经过几年的发展已经逐步走向成熟,另外还有裸机可运行的C程序,这给了我们很多的想象空间,可能有那么一天C程序会运行在只有几百KB内存的物联网终端设备上,UEFI启动程序使用C编写等等。
投诉 评论

8KB的C贪吃蛇游戏热点答疑和。NET7版本在之前的一篇文章《看我是如何用C编写一个小于8KB的贪吃蛇游戏》中,介绍了在。NETCore3。0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,……第一天送女儿上幼儿园,爸爸哭成泪人据扬子晚报消息,假期过后,四角吞金兽们迎来了幼儿园开学,面对第一次长时间与父母分离,很多孩子在刚开始上学时都会哭闹,不愿意去上学。其实,不光孩子有入园焦虑,许多家长在孩子第一天……图htc新品发布会强势回归U11外形酷炫配置高HTC公司在最近发表了自己的最新一款手机。这一款手机的性能方面还是不错的,最值得关注的还是手机拍照方面的技术。第三方对拍照进行评分为92分。HTC新机发布会在台湾隆重举行……诺基亚E系列第一款全键盘手机E61诺基亚E系列手机是主打商务功能的智能手机,它是面对成功人士和商务人士的手机产品。在E系列的E61它是诺基亚E系列首款采用全键盘的商务智能手机。诺基亚E61诺基亚E6……图华为mate7性能优良获称赞走进华为走向世界华为是中国家喻户晓的手机品牌,今天小编要为大家介绍了就是华为旗下的一款手机,叫做华为mate7,这款手机的性能非常好,受到许多消费者的喜欢。华为mate7是一款非常好的手……图武侯祠附近美食有哪些酸辣豆花是其中经典成都武侯祠,是一个重点文物保护单位,深受很多游客的喜爱,在这里能体验到三国文化。武侯祠附近有很多的美食,都是当地比较有名的,你知道有哪些吗?去四川旅游,美食是一定要吃的,……图华为发布会新机受关注一场盛大产品发布会将举行6月12号是华为将举办荣耀9直播发布会,届时所有的关于这一手机的谜底将揭晓。目前网络上有关于这一手机的谍照,网络上也有关于这一手机的参数,但是仅供参考。华为荣耀9在12号……图摩洛哥免签国内沸腾上帝都爱的地方你一定要来摩洛哥是北非的千年古国,上帝给它种下了童话的种子,曾经是很难办理签证的国家,让我们望而却步,如今面对中国免签,让我们国人的心都为之跳跃。来吧,摩洛哥。摩洛哥有数不尽的山,……买了一家有潜力的公司变富君周报20221120大家周末好,我是变富君。01本周交易情况本周变富君加仓了一家机会较好的公司,京东健康。02市场分析买入京东健康的逻辑比较简单,一方面变富君医疗相关持仓虽……涨价近40倍!可能还要涨?不少人吐槽真的太贵了!综合:北京商报、极目新闻、中国经济网等所有人都在催着你长大,而迪士尼还在守护你的童心。常常有迪士尼玩家在社交平台上这样说。但守护你的童心这件事是需要付费的,甚至还在……只会更惨!放开生育结婚登记后,普通男性会受益吗?四川最近推出了一项新政策,取消生育登记限制,就是说不用登记结婚也能生孩子了。新办法于2月15日开始实行。主要有以下几点内容。1、生育登记取消结婚限制2、取消办……图东湖海洋世界的美给你时空穿越感受提到海洋世界,脑海中会慢慢浮现出各种各样的海洋生物,这也是很多游客想要去了解的东西。而在东湖海洋世界,你不仅会有这些感受,你还会拥有让你难忘的体验。东湖海洋世界旅游区位于……
引力的速度几个世纪以来,引力的速度一直困扰着科学家们。第一个复杂的引力理论由艾萨克牛顿提出,并于1687首次发表。根据牛顿的说法,引力以无限的速度在宇宙中无处不在。然而,牛顿的引力理论并……长恨春归无觅处国家植物园挂牌成立伊始,2022年4月末的一个双休日,儿子带我们老两口去游览国家植物园。我的感觉是在北京地区除了公园,其它大街小巷的桃、杏花已经大部分凋谢了。但是进了国家植物园……女人喝豆浆的好处早晨喝豆浆9大好处7禁忌女人喝豆浆的好处有哪些?豆浆营养丰富,被称作植物牛奶,最适合女人和中老年人饮用。女人喝豆浆的好处非常多,百洋健康网带你了解。豆浆含有丰富的植物蛋白,磷脂,维生素B1、B2……每天吃苹果的好处十大好处需知道(全文)苹果是一种生活中常见的水果,含有丰富的营养物质,服用之后对于我们的身体非常的有利。有专家告诉我们,每天一个苹果,能够很好的提高身体抵抗力,减少患病的可能。今天,就来和大家一起详……关注未来两年锂产品供应或大幅增长,工信部推动锂资源保供稳价文:懂车帝原创刘艺伟〔懂车帝原创行业〕日前,据工信部官网消息,为促进锂资源产业平稳健康发展,保障新能源汽车等产业链供应链安全稳定,9月15日,工业和信息化部原材料工业司组……真丝衣物怎么洗晾干之后如何收藏保存真丝衣物怎么洗:晾干之后如何收藏保存真丝的衣服在夏天特别受欢迎,不仅穿着舒服,而且很凉快,但是真丝的衣服有一点非常头疼的就是不太好洗。下面小编给大家讲讲真丝衣服怎么洗?……喝了假酒怎么办喝了假酒采取什么措施喝了假酒怎么办:假酒之所以让人心悸是因为其多是用工业酒精勾兑,甲醇等杂醇,杂质含量高,人饮用后,轻者出现恶心,眼睛不适等轻微症状,严重则会甲醇中毒,喝了假酒以后怎么办呢?来了解……马尚得知赵睿回归大喊好消息新赛季广东后场双枪将再度合体北京时间8月31日,广东男篮外援马尚布鲁克斯在社媒发文写道:醒来就听到了好消息,杀手即将回归!昨日,赵睿在社媒晒出自己身穿广东队10号球衣的照片,并配文:Imback!这让外界……晚上喝豆浆好吗揭秘不适宜喝豆浆的8种情况喝豆浆具有美容养颜、延缓衰老、补钙等作用,因此豆浆日益成为每个家庭不可缺少的食品。特别对于女性来说多喝豆浆好处是很多的,一般人都是早上喝豆浆最佳,晚上喝豆浆好吗?豆浆虽然有很多……这样喝豆浆胜过吃补药揭豆浆的4个完美搭档冬季进补吃什么好?豆浆补虚润燥,可调节身体内分泌系统。秋冬季节干燥寒冷,喝豆浆可以滋补去噪,驱寒暖身。小编告诉你豆浆跟这4类食物搭配,可以补血养颜,滋补润肤,暖身驱寒,最适合女……健康养生豆浆这6种喝法是给自己下毒很多上班族喜欢把豆浆作为早餐的选择之一。的确,豆浆营养非常丰富,且易于消化吸收。豆浆是防治高血脂、高血压、动脉硬化、缺铁性贫血、气喘等疾病的理想食品。但是在喝豆浆时需要注意以下……小伙舌大如球睡觉或因窒息致死(图)小伙舌大如球睡觉或因窒息致死。英国《每日邮报》10月27日报道,波兰中部城市格洛捷奇(Grojec)18岁男子克里兹多夫维格奇恩(KrzysztofWegrzyn……水务局工会工作总结要尽造句用要尽造句大全半月板三度损伤可以慢跑吗珍宝造句用珍宝造句大全浅议如何做好施工企业工程项目思想政治工作如何才能改掉自己的坏习惯纠正自己的性格小学学困生杨的转化案例从之死看的短视莲子的功效与作用及禁忌吃桑葚有什么好处吗它全身都是宝啊在追梦的道路上手把手教你做香菜叶肉末粥

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形