写点什么

VS2015 Update 2 中如何提升.NET Native 代码

  • 2016-05-02
  • 本文字数:841 字

    阅读完需:约 3 分钟

Microsoft 持续发表 Visual Studio 2015 的新特性与功能。在最新的称为 Update 2 的变更中也不例外,对.NET Native 编译器进行了几项更新。你可能记得,当.NET native 作为编译目标时,Windows 应用程序(这里指针对 Windows 10 的 UWP 应用程序)直接被编译为本地代码,而不产生默认的中间语言(IL)。这样做有几个优点,最主要的是开发者可以继续用 C#或是 Visual Basic 写应用程序,而与传统的基于 IL 的应用程序相比,用户可得到更快的执行速度,更短的启动时间并占有更少的内存。

可以预见,编译.NET 为本地代码有许多缺点。Microsoft准备了一个很长的列表,其中列出了他们认为的.NET Native 与常规的 Windows 应用程序之间的“行为变化”。本文不会详细说明这些变化,但值得注意的是其中涉及泛型反射的变化。正如.NET 团队的 Stacey Haffner 和 Matthew Whilden 在一篇博文中写道的,“当编译本地代码时,动态性问题将会成为一个挑战,因为所有的代码都必须在编译时识别和编译。”

由于使用静态分析来确定所有泛型实例非常复杂,团队引入了 Universal Shared Generics (UGS)。现在当可以用特定类型的代码表示时,会产生优化后的代码,而当不可表示时则会使用 UGS。

另外一个有利于所有.NET Native 开发者的变化是.NET Native 项目编译器后端的改变。最新发布的 1.3.1 版本的.NET Native 工具使用与 Microsoft C++ 编译器相同的程序内联引擎。随着时间的推移,.NET 团队计划在.NET Native 项目中使用更多 C++ 编译器提供的优化方案。
要使用这些新的编译器功能,你需要下载最新的 UWP App Development Tools(1.3.1 版本 for Windows 10 SDK 10.0.10586),并从 NuGet 下载最新的.NET Core UWP 包。它们需要安装在 Update 2 可用的 Visual Studio 2015 之上。

查看英文原文 How VS2015 Update 2 Improves .NET Native Code


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-02 19:002926
用户头像

发布了 218 篇内容, 共 69.7 次阅读, 收获喜欢 76 次。

关注

评论

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

java版gRPC实战之三:服务端流

程序员欣宸

gRPC

100行代码实现HarmonyOS“画图”应用,eTS开发走起!

HarmonyOS开发者

HarmonyOS ETS ArKUI 3.0

java版gRPC实战之六:客户端动态获取服务端地址

程序员欣宸

gRPC grpc双向流

2.7万只!当前及未来仍将是量化交易的黄金期

非凸科技

rust 招聘 机器学习算法 算法交易

亚马逊云科技创新大会 | 云基础架构

亚马逊云科技 (Amazon Web Services)

架构

java培训-JVM内存分配面试题分享

@零度

JVM JAVA开发

从 OpenTSDB 到 TDengine,至数物联网平台技术改造之路

TDengine

数据库 tdengine 物联网

传统数据库改造难?华为云GaussDB“五心”解决

华为云开发者联盟

数据库 数字化转型 GaussDB 云数据库 华为云数据库

espnet中的transformer和LSTM语言模型对比实验

华为云开发者联盟

nlp Transformer espnet LSTM语言模型 aishell

面试突击35:如何判断线程池已经执行完所有任务了?

王磊

Java java面试

TiDB 在携程 | 实时标签处理平台优化实践

PingCAP

云效持续交付流水线,免费还好用!

阿里云云效

云计算 阿里云 持续集成 持续交付 持续交付流水线

web前端培训-MySQL的索引下推解析

@零度

MySQL 前端开发

大数据自动管理,24 小时服务无间断,StarRocks 如何做到?

StarRocks

大数据 数据分析 StarRocks

大数据培训Flink 源码解析Async IO

@零度

flink 大数据开发

java版gRPC实战之七:基于eureka的注册发现

程序员欣宸

gRPC 注册中心 eureak

JavaScript数组,看这篇就ok了!

坚果

3月月更

TDengine 助力国产芯片打造“梦芯解算”,监测地质灾害 24 小时无间断

TDengine

数据库 tdengine 物联网

求职有 Pulsar | 中国联通、StreamNative 多个热招岗位

Apache Pulsar

开源 云原生 代码 Apache Pulsar 岗位招聘

生产环境频繁内存溢出,原来就是因为这个“String类”

华为云开发者联盟

jdk JVM 内存 字符串 String类

NFT游戏NFT交易系统开发技术

薇電13242772558

NFT

java版gRPC实战之四:客户端流

程序员欣宸

gRPC grpc双向流

Linux下TCP网络编程-创建服务器与客户端

DS小龙哥

3月月更

《LeetCode刷题报告》题解内容 Ⅲ

謓泽

3月月更

学习编程是最好的复利方式

FunTester

FunTester

java版gRPC实战之五:双向流

程序员欣宸

gRPC grpc双向流

《2022网络威胁形势研究报告》重磅发布 | 附下载

青藤云安全

一个服务器轻松存储上亿数据,TDengine 在北京智能建筑边缘存储的应用

TDengine

数据库 tdengine 物联网

如何判断线程池已经执行完所有任务了?

CRMEB

得物技术登录组件重构

得物技术

重构 用户增长 增长 组件 用户登录

基于服务网格的分布式 ESB, 实现应用无关的传统 ESB 转型升级

BoCloud博云

微服务 ESB

VS2015 Update 2中如何提升.NET Native 代码_.NET_Jeff Martin_InfoQ精选文章