免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

微软通过.NET Native 为 Windows Store 应用提速

  • 2014-04-08
  • 本文字数:878 字

    阅读完需:约 3 分钟

.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

原文英文链接: Microsoft Speeds Up Windows Store Apps with .NET Native

2014-04-08 22:191582
用户头像

发布了 59 篇内容, 共 21.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

啊哈!这段时间的学习感受

Nydia

8月日更

架构实战营-毕业设计

En wei

架构实战营

架构实战营毕业总结

En wei

架构实战营

从 Druid 控制台(Druid console)中进行查询

HoneyMoose

Java工程师跳槽经验分享,看完跪了

Geek_f90455

Java 程序员 后端

Java开发岗还不会这些问题,一文轻松搞定

Geek_f90455

Java 程序员 后端

手撸二叉树之最小高度树

HelloWorld杰少

数据结构与算法 8月日更

Java开发究竟该如何学习,一文轻松搞定

Geek_f90455

Java 程序员 后端

招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇

梦想橡皮擦

8月日更

分布式存储系统可靠性:系统量化估算

vivo互联网技术

分布式存储

波宝TronLink钱包APP系统开发介绍

Geek_23f0c3

钱包系统开发 DAPP智能合约交易系统开发 波宝钱包

Java开发热门前沿知识,架构师必备技能

Geek_f90455

Java 程序员 后端

docker部署redis记录,楼主亲测无异常

小鲍侃java

8月日更

Rust从0到1-模式-使用场景

rust 模式 Patterns Matching

☕️【系统设计】如何设计出优雅且实用的API接口

码农架构

Java 架构设计 架构设计实战

在线短视频缩略图剪切工具

入门小站

工具

【Flutter 专题】79 图解 Android Native 集成 FlutterBoost 小尝试 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

Java多线程从基础到并发模型统统帮你搞定!面试总结

Geek_f90455

Java 程序员 后端

Java大厂74道高级面试合集,附面试题

Geek_f90455

Java 程序员 后端

02-架构图

Lane

用5W1H告诉你如何规划合理的测试策略

华为云开发者联盟

敏捷 敏捷开发 测试 测试策略 缺陷

十大排序算法--选择排序

Ayue、

排序算法 8月日更

FILECOIN矿池挖矿APP系统开发案例

获客I3O6O643Z97

挖矿矿池系统开发案例 fil挖矿

Java开发者值得深入思考的几个问题,建议收藏

Geek_f90455

Java 程序员 后端

缓存使用的一些问题

旺仔大菜包

redis

Seldon 使用 (五): engine & graph

托内多

tensorflow kubeflow seldon

外包学生管理系统架构设计文档

君子意如何

架构师训练营第 1 期 「架构师训练营第 1 期」

ECMAScript 2020(ES11)新特性简介

程序那些事

JavaScript ecmascript nodejs ES11 程序那些事

几百行代码写个Mybatis,原理搞的透透的!

小傅哥

Java spring 源码 mybatis 代理

FastApi-01-初识

Python研究所

FastApi 8月日更

Java多线程实现方式及并发与同步,写的太详细了

Geek_f90455

Java 程序员 后端

微软通过.NET Native为Windows Store应用提速_.NET_Abel Avram_InfoQ精选文章