专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  在之前的一篇文章《看我是如何用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:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasespan开启ILLinker
  另外后面的。NET版本支持更好的程序集剪裁,也就是ILLinker工具,我们运行命令行时p:PublishTrimmedtrue选项就可以启用。spanstyleboxsizing:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasep:PublishTrimmedspanstyleboxsizing:borderbox;spantruespan此时我们可以发现,只有11MB大小了,比。NETCore3。0时代的25MB降低了一半多。使用NativeAOT功能然后我们就要开始使用。NET7的NativeAOT功能,需要在项目文件中加入PublishAottruePublishAot选项。我们加入了一个条件,在平时不开启,只有输入不同Mode的时候才开启。spanstyleboxsizing:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasep:Modespanstyleboxsizing:borderbox;spanNativeAOTspan此时可以获得一个2。86MB大小的程序,比。NETCore3。0时代的4。7MB要小了快一半。使用Moderate模式继续修改csproj文件,让它支持Moderate模式,也就是使用IlcGenerateCompleteTypeMetadatafalseIlcGenerateCompleteTypeMetadata不生成完整的类型元数据,另外也用IlcOptimizationPreferenceSizeIlcOptimizationPreference让编译器为程序大小进行优化,而不是速度。由于后面的模式也需要支持这个,所以加入了很多条件编译的选项。spanstyleboxsizing:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasep:Modespanstyleboxsizing:borderbox;spanNativeAOTModeratespan结果和上面的一样的2。86MB,也就是说现在NativeAOT应该默认就是Moderate模式。进一步移除无关数据
  接下来我们进一步移除无关的数据。
  使用EventSourceSupportfalseEventSourceSupport关闭对EventSource的支持
  使用UseSystemResourceKeystrueUseSystemResourceKeys删除System。程序集的异常消息。
  使用InvariantGlobalizationtrueInvariantGlobalization删除全球化特定的代码和数据。spanstyleboxsizing:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasep:Modespanstyleboxsizing:borderbox;spanNativeAOTHighspan此时我们再次发布,可以看到大小已经降低到了2。15MB,比。NETCore3。0时的3。0MB降低了快30。继续移除无关数据
  通过IlcGenerateStackTraceDatafalseIlcGenerateStackTraceData移除堆栈跟踪数据
  通过IlcInvariantGlobalizationtrueIlcInvariantGlobalization移除其它语言的支持
  通过IlcFoldIdenticalMethodBodiestrueIlcFoldIdenticalMethodBodies将相同的方法体进行合并。只为我们省下了几百KB,此时大小来到了1。88MB。关闭反射接下来我们可以继续使用IlcDisableReflectiontrueIlcDisableReflection来关闭反射,移除掉一些反射的元数据。spanstyleboxsizing:borderbox;display:block;lineheight:1。3;dotnetpublishspanstyleboxsizing:borderbox;rspanwinx64spanstyleboxsizing:borderbox;cspanReleasep:Modespanstyleboxsizing:borderbox;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编写等等。

五折传说要来了,第14款典藏突袭,期待免费传说,即将开放抽取大家好,这里是阿呆的峡谷日记,将会给你带来王者荣耀最新的爆料内容。虽然目前离春节还有一段时间,不过很多玩家对春节的活动也是比较感兴趣的,我们也可以根据官方以往的更新情况,得知春节活LG推出可隐藏触控板的笔记本系列gramStyle品玩1月6日讯,LG在CES2023上推出了LGgramStyle笔记本电脑系列,提供16英寸和14英寸版本,均采用玻璃设计,玻璃饰面的可根据光线和角度的变化而发生动态变化。LGg九峰山冰挂节抖音短视频大赛开赛了,万元奖金等你来拿!新年伊始,每个人都有各种美好的愿望,如一夜暴富,如身体健康,如平安幸福,如2023第一次旅行说到新年第一次旅行,您最想哪里呢?非汝州九峰山莫属了!在这里不仅可以欣赏到最美的冰挂奇观湿地之美丨黑龙江扎龙国家级自然保护区黑龙江扎龙国家级自然保护区是以芦苇沼泽为主的内陆湿地和水域生态系统,是世界上面积最大的野生丹顶鹤栖息繁殖地,被称为我国丹顶鹤故乡。新华社发(宋燕军摄)这是黑龙江扎龙国家级自然保护区威海第二届千里山海嗨玩冬季冰雪嘉年华1月1日盛大开幕威海第二届千里山海嗨玩冬季冰雪嘉年华指导单位威海市商务局威海市文化和旅游局威海市体育局主办单位威海文旅发展集团有限公司承办单位威海城市品牌运营有限公司各大主题活动,精彩不断2023敦煌荣膺2022年中国网红城市标志城市来源消费日报本报讯(记者刘胜利)近日,在2022中国企业家博鳌论坛上,中国网红城市指数报告正式发布,甘肃省敦煌市被评为2022中国网红城市标志城市,全国仅10个城市获此殊荣。敦煌被香港以这种方式参加纽约时报广场新年庆典已做好准备迎接全球游客来源环球网环球网报道记者赵友平据香港特区政府刚刚发布的新闻公报,纽约时报广场纽约时间2022年12月31日举行跨年庆典,其中一群香港艺术家呈献了精彩的现代功夫马戏团表演。香港驻纽约新年快乐!假期安全提示请查收!今天,我们迎来崭新的2023年!辞旧迎新之际,也是安全风险增大事故易发之时,温馨提示您过节莫忘安全,平安才是幸福!01注意出行安全出行前关注天气变化和路况信息,提前检查车辆规划出行安徽又一大项目建成,辐射四方,多个单项工程规模宏大2022生机大会想呼吸着每座城市的空气,想感受着每座城市的人儿,想看着每座城市的风景。安徽自古就备受重视,早在徽商崛起之时,安徽就展现了它不容忽视的实力。从历史属性来看,安徽并不输元旦出游哪里最火热?景点不必开盲盒,这份数据指南攻略请收好!再过几天,2023年的元旦小长假就要来了!三天的休息时间,带上家人朋友一道出游再合适不过了。小长假的旅游地怎么选择呢?无非就是要满足景美别致服务周到等几个要求。难吗?其实不难!毕竟如何在哥伦比亚度过10天哥伦比亚卡塔赫纳的景色哥伦比亚是通往南美洲的门户,它提供了文化历史艺术和自然的完美结合,以满足所有游客的需求。10天的时间不足以看完哥伦比亚的一切事实上,这意味着错过了这个幅员辽阔
恋爱应该是让人感觉被尊重,不应该成为解决某种需求的工具头条创作挑战赛中秋节的大瓜大家都吃了吗?想不到吧,今年中秋大家吃最多的不是月饼,而是娱乐圈的大瓜。估计有上网的伙伴应该都知道了,那就是李易峰的嫖娼被抓事件。假期三天,第一天爆料,第卡戴珊前任再爆料!ampampquot不雅录像ampampquot是她母女一手策划,她妈还亲自看过今年5月,金卡戴珊与前男友RayJ的性爱录影带再次引起轩然大波,在卡戴珊家族的全新真人秀卡戴珊一家中,这盘录影带又一次被提及,并占了相当大的节目分量。才刚第一集,金姐就在镜头前泪流19年前,那个靠着一张照片走红网络的中学生小胖,如今怎么样了?2003年初,16岁的钱志君因为一张照片意外走红。随着恶搞风潮的兴起,钱志君被P成蒙娜丽莎怪物史莱克,甚至是加勒比海盗神奇的是,即使是P图,也没有违和感,甚至因为钱志君的搞笑表情,最美小龙女教运动!瑜珈裤逼出曲线56岁最美小龙女李若彤,穿着一套贴身瑜珈裤教学,结果体态曲线让大家看了非常羡慕。香港女星李若彤,因1995年饰演神雕侠侣小龙女成名,即便戏剧不断被翻拍,女主角也不断改朝换代,仍无法宋丹丹儿媳妇博谷进门前,婆婆处处不满进门后,宠我如亲女儿最近,巴图和媳妇博谷合体参加了一档真人秀。向来支持儿子事业的的宋丹丹,自然少不了到场撑场子。这样一来,宋丹丹和博谷这对婆媳也就有了节目上的首次互动同框。婆媳关系,本就是复杂的议题。这位老兄,是喝了多少酒?建议各位没事的时候,多看看藏宝阁,总会有一些意外突然出现,这不,下面又是一个老兄标错价格,估计损失上万不止一个175级的号,不看技能,不看属性,单单一个等级都不止1444吧?估计在这游戏差点让我精神分裂对马岛之魂游戏场景在日本本土与中国大陆之间中有一个日本的小岛,名叫对马岛,游戏的背景,是蒙古军队,入侵日本途中,经过日本对马岛,日本武士,在对马岛战败,境井仁,为了救其舅舅,解放对9月开学季新款PC大作来袭JOJO的奇妙冒险群星之战重制版发行日期20220902游戏类型格斗游戏制作发行CyberConnect2Co。Ltd。BandaiNamco简介JOJO的奇妙冒险群星之战重制版J版本陷阱只因一件装备翻身成T0?这套出装让人均拥有70减速听说只要稍微改变出装就能让西施轻松实现百分百拉中还能让玄策的爆发再翻一倍这么厉害的上分小技巧怎么能不给咱仙友安排上呢!(请叫我宠粉仙)快叫上你的开黑好友一起来学吧PART1与西施完科幻游戏Synduality新图与AI伙伴和机甲同行今日在索尼StateofPlay直播上,万代公布了第三人称科幻射击游戏Synduality。游戏将于2023年发售,登陆PC(Steam)PS5和XSXS。现在官方公布了游戏新截图BUFF加满!雷迪奥持续发力电竞赛场生而无畏,战至终章。近年来,电子竞技不断升温,健康电竞已经成为当下最热点的话题之一。Dota2,英雄联盟,王者荣耀等更是入选杭州亚运会赛事项目。电竞比赛现场为观众带来的不只是热血的
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网