微软通过.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脚本,这个脚本和所在安装 ...
随机推荐
- 『TensorFlow』通过代码理解gan网络_中
『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使 ...
- Leetcode 92
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...
- 87. Scramble String *HARD* 动态规划
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...
- PHP:第一章——PHP中的goto语句和
goto语句: <?php header("Content-Type:text/html;charset=utf-8"); /*goto语句:可以代替break*/ //例1 ...
- start with...connect by子句的浅用
start with的用法,其基本语法如下: select … from tablename start with 条件1connect by 条件2where 条件3; 但是我在pl/sql中写入以 ...
- html网页设计
对于html文档可以直接通过浏览器打开并解释执行,不需要使用服务器.一个html文档的架构,一般由3对标签构成:<html></html>,<head></h ...
- Java Socket 实现HTTP服务器核心
原文链接:http://www.ihuxu.com/p/235.html 首先了解下HTTP协议: wikiPedia的说明很好,在此不重复了.链接:http://zh.wikipedia.org ...
- Java不同场景oom错误探究及解决办法
1.OOM for Heap=>java.lang.OutOfMemoryError: Java heap space 分 析 此OOM是由于JVM中heap的最大值不满足需要,将设置heap ...
- Python seek和tell
f = open("胡辣汤", mode="r+", encoding="utf-8") f.seek(0,2) # 移动到末尾 conte ...
- 关于epoll的IO模型是同步异步的一次纠结过程
这篇文章的结论就是epoll属于同步非阻塞模型,这个东西貌似目前还是有争议,在新的2.6内核之后,epoll应该属于异步io的范围了,golang的高并发特性就是底层封装了epoll模型的函数,但也有 ...