写点什么

Visual Studio 如何提高 C++ 性能

  • 2012-11-28
  • 本文字数:941 字

    阅读完需:约 3 分钟

在 Build 2012 开发者大会上,Jim Radigan 和 Don McCrady 做了一个演讲,讨论了改进的 Visual Studio 2012(VS2012)编译器为 C++ 程序开发者带来了哪些益处。Radigan 首先从最初的 Pentium 处理器的出现开始对计算能力不断提高的历史进行了简要的概述,继而引出了自己的话题“一切都是为了性能:使用 Visual C++ 2012 最大化硬件利用率”。

第一代 Pentium 处理器有 310 万个晶体管,而目前这一代 Ivy Bridge 处理器有 14 亿个晶体管。正如 McCrady 之后所提到的,C++ AMP 允许开发者通过一种语言来使用这一切——包括 CPU 以及越来越多地集成于 CPU 内核(CPU Dies)中的 GPU(不包括独立扩展卡之中的 GPU)。

与一般的代码相比,以 C++ AMP 为目标的代码往往能够提供最佳性能,接下来 Radigan 提到了 VS2012 中的自动矢量化和自动并行化优化,这意味着在很多情况下仅重新编译已有的 C++ 代码就能直接获益。这也导致了 VS2012 中优化器的大小是之前版本中的两倍。

开发者想要确保编译器检查代码从而进行加速时,可以对代码片段进行标记。下面的编译器指令

复制代码
#pragma loop(hint_parallel(4))

允许开发者向编译器提供线索:包含该编译器指令的循环应该被扩展到多个核上(该代码片段中是 4 个核)。当然,编译器依然会进行全面的分析,所以如果被标记的代码块不适合并行化,那么编译器就不会进行任何优化。

Radigan 通过一个光线跟踪的演示证明了仅是简单地在 VS2012 下重新编译源代码就带来了 16 倍的性能提升。Radigan 强调说,尽管 VS2012 改进了编译器性能,但是并没有能够自动产生更快速的代码的“灵丹妙药”。编译器团队会继续寻求创新,因为 Windows8、SQL Server 以及 Office 都是 C++ 应用程序。

Radigan 指出虽然现在并没有任何可用的东西,但是他想向 AMP 中添加原生的 C#支持。(目前 C#开发者能够通过 P/Invoke使用 AMP。)最后,C++ AMP 规范是一个开放标准,但是现在 Apple 的平台(iOS 或者 Mac OS X)上并没有相应的实现,但是理论上是可以的。

英文原文地址 http://www.infoq.com/news/2012/11/vs2012_CPP


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-11-28 07:283262
用户头像

发布了 321 篇内容, 共 118.8 次阅读, 收获喜欢 19 次。

关注

评论

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

Java后端学习笔记

小太阳

Java 学习笔记 学习路线

三星堆遗址

wood

300天创作 三星堆

JVM到底该学些什么?

蝉沐风

JVM 虚拟机 学习路线

基于区块链和web3.0的全新社交协议Coo Social首发上线虎符创新区

区块链前沿News

Hoo 虎符交易所 coo Web3.0

(1-3/3)团队OKR的设定

mtfelix

300天创作 无限生长 2022Y300P

“群舰效应”与商业市场大航海

脑极体

在线JSON转HTML工具

入门小站

工具

应收账款的界定

whatever

供应链金融 保理

设计模式【7】-- 探索一下桥接模式

秦怀杂货店

Java 设计模式 桥接模式

一个cpp协程库的前世今生(十)调度的流程

SkyFire

c++ cocpp

查收新年礼物 | DevEco Studio 3.0 Beta2发布,20个新变化,等你升级

HarmonyOS开发者

HarmonyOS

Python猫 2021 文章小结,翻译竟比原创多!

Python猫

Python

政法委重点人员联防联控平台开发,跨部门大数据系统搭建

电微13828808271

区块链数字藏品平台开发,区块链+数字藏品激活传统文创

电微13828808271

Linux之find命令的参数详解

入门小站

Linux

阿里云贾少天:大规模云服务器高效使用及管理实践

阿里云弹性计算

阿里云 云栖大会 云上运维

科尼数字科技张彬:云设计系统助力行业数字化转型

阿里云弹性计算

阿里云 弹性计算 年度峰会

微博评论高性能高可用计算架构

ren

悄悄告诉你,有种管理方法能让设计团队学习、产出两不误!

LigaAI

效率 技术

今晚直播:展望2022,操作系统将走向何方?

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

当前端渲染遇上边缘计算

火山引擎边缘云

龙蜥社区2021年度运营委员会会议顺利召开

OpenAnolis小助手

龙蜥社区

DevEco Device Tool 3.0 Beta2新版本发布,新增可视化Trace工具和Perf性能分析工具

HarmonyOS开发者

OpenHarmony

浅谈ThinkPH5.0和5.1的反序列化利用链分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

开源实践 | 六棱镜基于 OceanBase 选型探索与实践

OceanBase 数据库

OceanBase 开源 OceanBase 社区版 客户案例

Spring 如何解决循环依赖问题?

CRMEB

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析

洛神灬殇

RocketMQ SpringCloud Alibaba Alibaba技术 Apache RocketMQ

04 Prometheus之配置步骤及容量规划

穿过生命散发芬芳

Prometheus 1月月更

Elasticsearch 多种跨机房灾备方案对比与实战解读

Se7en

Tableau Day1: 完成第一个可视化

贾献华

Tableau 1月月更

架构实战 - 模块八

唐敏

「架构实战营」

Visual Studio如何提高C++性能_语言 & 开发_Jeff Martin_InfoQ精选文章