微软通过.NET Native为Windows Store应用提速
.NET Native是微软的一次尝试,旨在降低Windows Store应用的启动时间和内存占用。
自从去年11月份,有人发现Windows Store应用的启动速度有了大幅提高后,对该项目的猜测就已经开始了。在微软内部,.NET Native叫做“项目N”,它使用微软C++基础设施,将托管代码预编译为原生代码,从而大幅提升.NET应用的性能。这项技术与NGen(Native Image Generator)或为Store应用进行动态编译是不同的。
.NET Native工具链最初生成MSIL,然后由C++优化器处理并生成MDIL(依赖于机器的中间语言),.NET Native团队的项目经理Mani Ramaswamy这样说道。他在Channel 9的访谈中提供了很多技术细节。在该访谈中,开发主管Shawn Farkas介绍,原生应用会静态地链接到只有几百KB大小的Mrt100.dll。Mrt100.dll代表一个最小化的CLR,为静态编译进行了重构和优化。因此,应用程序启动时将运行于这个最小化的CLR之上,不会加载整个.NET运行时,不会涉及任何JIT编译。
应用程序仍然可以使用dynamic来访问在运行时才能决定其类型的对象。Ramaswamy说,这是在代码优化阶段,保留所有可能在运行时访问的类型时实现的。此外,仍然还可以使用标准的后台垃圾回收。
这些优化将应用的启动时间缩短到原来的60%。.NET Native目前为预览版,并且面向的是Windows Store应用,但.NET Native团队希望将范围扩大到普通的.NET桌面应用。
对于.NET开发者来说,没有什么改变。在应用程序级别没有引入抽象机,整个开发调试的体验也保持一致。得到改变的是构建,需要为特殊的硬件平台生成特殊的构建版本(目前已经支持ARM和x86-64bit,x86-32bit也即将支持)。优化后,构建时间可能要比原来多1-2分钟。
目前并不是一切都十分顺利。MSDN有一节专门介绍用.NET Native编译应用程序,其中一个页面介绍将应用迁移到.NET Native。两者在以下方面存在一些差别:运行时、处理动态编程和反射、大量不支持的场景和API以及Visual Studio。
要想使用原生代码,必须安装Visual Studio 2013 Update 2 RC和.NET Native SDK。
微软通过.NET Native为Windows Store应用提速的更多相关文章
- Win10版《芒果TV》获评2016年度Windows Store最佳官方/休闲娱乐应用(LiveSino和微软信仰中心联合评选)
微软信仰中心于2016年12月9日联合了 LiveSino 进行了最佳 Windows Store 应用特辑的投票评选,通过为期20天的海量用户投票,Win10版<芒果TV>荣获最佳官方应 ...
- 微软宣布.NET Native预览版 C#可编译为本地机器码【转】
英文原文:Announcing .NET Native Preview 微软在 MSDN 博客上宣布了 .NET Native 的开发者预览版..NET Native 可以将 C# 代码编译成本地机器 ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- Windows Store Javascript项目使用高德地图、谷歌地图、百度地图API
原文 Windows Store Javascript项目使用高德地图.谷歌地图.百度地图API 在Win8 Store 项目中可以使用的地图主要有微软的Bing Map,目前高德地图sdk也支持Wi ...
- Windows Store 应用
使用 Project Siena 生成一个 Windows Store 应用 继 App Studio 之后微软又一力作 Project Siena [Win8 应用神器]给初学开发 或 对 Wi ...
- 使用 Project Siena 生成一个 Windows Store 应用
继 App Studio 之后微软又一力作 Project Siena [Win8 应用神器]给初学开发 或 对 Windows Store 应用感兴趣的同学们的一个福利,可以通过 一个简单的应用可以 ...
- Windows Store GIF player 诞生记
在Win8上面,Image source切换的时候有bug.当我们短时间定时切换的时候,Image不能正常地显示对应的图片.Image控件又不支持GIF播放,所以GIF图片的播放就是一个非常头痛的问题 ...
- Windows store app[Part 3]:认识WinRT的异步机制
WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...
- PowerShell将Windows store应用程序安装为开发者模式
原文: PowerShell将Windows store应用程序安装为开发者模式 在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装 ...
随机推荐
- httpclient妙用一 httpclient作为客户端调用soap webservice(转)
前面有一篇使用HttpClient调用带参数的post接口方法,这里找到一篇使用HttpClient调用Soap协议接口的方式. 原文地址:httpclient妙用一 httpclient作为客户端调 ...
- response.setHeader的各种用法 ------ 笔记(一)
转载地址:https://blog.csdn.net/junmoxi/article/details/76976692 1.一秒刷新页面一次 response.setHeader("refr ...
- HTML绘制三角形的方法:
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px ...
- PatePoco中对sql参数化时Top参数化的问题
PatePoco中对sql参数化是直接用@+参数名来处理,但是想用如下语句时竟然报错了 SELECT TOP @num * FROM tableA 执行时抛出异常,根据错误提示搞了很久都没找到原因,最 ...
- Mysql 存储过程-转载
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储 ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...
- DevExpress v18.1新版亮点——WinForms篇(五)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...
- web.xml的schema文件
2.3和2.4: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLI ...
- anu - event
import { document } from "./browser"; import { isFn, noop, options } from "./util&quo ...
- iOS开发UI之Quartz2D使用(绘制基本图形)
iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...