写点什么

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:003372
用户头像

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

关注

评论

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

Fragment基本概述

芯动大师

API Fragment 三周年连更

3d渲染和动画制作:KeyShot Pro mac中文版

真大的脸盆

Mac Mac 软件 渲染器 动画制作 渲染工具

Claude,一个可以无需魔法访问的ChatGPT

派大星

ChatGPT Claude

基于 RocketMQ Connect 构建数据流转处理平台

阿里巴巴云原生

阿里云 RocketMQ 云原生

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

浅羽技术

Java hibernate 框架 ORM框架 三周年连更

【体验有奖】 玩转 AIGC,Serverless 一键部署 AI 图像生成服务

阿里巴巴云原生

阿里云 Serverless 云原生

RESTful API类渗透测试要点

阿泽🧸

RESTful API 三周年连更

麻了,不要再动不动就BeanUtil.copyProperties

JAVA旭阳

Java 架构设计

【坚果派-坚果】OpenHarmony Native开发【一】

坚果

OpenHarmony 三周年连更 napi

【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】

A-刘晨阳

Linux Dockerfile 三周年连更

Spider实战系列-爬取鬼吹灯小说

浅辄

案例分享 三周年连更

Go 也能实现 “继承”?

陈明勇

Go golang 继承 三周年连更

软件测试/测试开发丨Python 算法与数据结构面试题

测试人

Python 软件测试 面试题 自动化测试 测试开发

JS字符串的截取出现的bug

格斗家不爱在外太空沉思

JavaScript ES6 三周年连更

详解更新缓存的五种组合方式

穿过生命散发芬芳

缓存 三周年连更

如何成为一名数据分析师(二)——统计学之描述性统计

Data 探险实验室

数据分析 数据 数据分析师

Nacos 2.2.2 发布,优化启动体验和鉴权提示

阿里巴巴云原生

阿里云 云原生 nacos

Hyperledger(超级账本)的worldstate和SAP CRM的CRMD_CUMULAT_H

汪子熙

超级账本 hyperledger 三周年连更

什么是划分子网?网络工程师划分子网有啥技巧?

wljslmz

子网划分 三周年连更

如何锁住文件 | python小知识

AIWeker

Python python小知识 三周年连更

Java房屋出租系统

timerring

Java

基于Mac M1玩转AI绘图

IT蜗壳-Tango

三周年连更

现代硬件技术的发展与未来趋势

海拥(haiyong.site)

三周年连更

Spring Data开发手册|手摸手教你简化持久层开发工作

浅羽技术

Java spring springdata 框架 三周年连更

Unity 之 后处理实现界面灰度效果(PostProcessing实现 | Shader实现)

陈言必行

Unity 三周年连更

Java面向对象编程中级

timerring

Java

Meetup 直播预告|助力企业数字化转型,8 大微服务&容器开源实践亮点抢先看

阿里巴巴云原生

阿里云 开源 容器 微服务 云原生

Go语言开发小技巧&易错点100例(五)

闫同学

三周年连更

不用写一行代码,就能生成web服务完整项目代码,服务端也可以低代码开发

vison

Go Web crud gin 代码自动生成

跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案

No Silver Bullet

webview 解决方案 跨平台应用开发 三周年连更

AI日课@20230415:Stable Diffusion入门学习;ChatGPT的成本计算

无人之路

ChatGPT

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