写点什么

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

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

关注

评论

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

怎样搭建企业内部维基百科

Baklib

英特尔数据中心GPU正式发货,以开放灵活提供强劲算力

科技新消息

requestVideoFrameCallback() 简单实例

devpoint

3D 视频处理 7月月更

DDD领域驱动设计如何进行工程化落地

慕枫技术笔记

DDD 架构设计 7月月更

【周周有奖】云原生编程挑战赛“边缘容器”赛道邀你来战!

阿里巴巴云原生

阿里云 边缘容器 云原生编程挑战赛

一文读懂Okaleido Tiger近期动态,挖掘背后价值与潜力

股市老人

Baklib|为什么说企业需要重视客户体验?

Baklib

学习Typescript(二)

bo

前端 ts 7月月更

深开鸿:万物智联的大江上,升起一轮开源鸿蒙月

脑极体

PlatoFarm社区生态福音,用户可借助Elephant Swap获得溢价收益

股市老人

编码用这16个命名规则能让你少写一半以上的注释!

岛上码农

flutter ios 前端 安卓开发 签约计划第三季

SpringBoot基于异常处理exception发送邮件消息提醒

宁在春

springboot 7月月更

Bootstrap Affix和过渡效果插件的详细使用【前端Bootstrap框架】

恒山其若陋兮

7月月更

PLATO上线LAAS协议Elephant Swap,用户可借此获得溢价收益

鳄鱼视界

React Refs 笔记📝

程序员海军

React 7月月更

一文读懂Okaleido Tiger近期动态,挖掘背后价值与潜力

小哈区块

融合数据库生态:利用 EventBridge 构建 CDC 应用

阿里巴巴云原生

阿里云 云原生 事件总线 CDC EventBridge

什么是低代码?哪些平台适合业务人员?用来开发系统靠不靠谱?

优秀

低代码 低代码平台

一文读懂Okaleido Tiger近期动态,挖掘背后价值与潜力

西柚子

Prometheus 的 API 稳定性保障

耳东@Erdong

Prometheus API 7月月更

基于java springboot失物招领微信小程序源码

清风

计算机毕业设计 失物招领小程序

基于对象的实时空间音频渲染丨Dev for Dev 专栏

声网

Dev for Dev 空间音频 实时互动

智能电视与小程序的结合

Geek_99967b

物联网

openEuler Embedded SIG | 分布式软总线

openEuler

开源 分布式 操作系统 嵌入式 openEuler

被忽视的智能电视小程序领域

Geek_99967b

物联网

leetcode 763. Partition Labels 划分字母区间(中等)

okokabcd

LeetCode 数据结构与算法 贪心算法

研发效能的道法术器

laofo

DevOps cicd 研发效能 基础设施 持续交付

第二轮1000个Okaleido Tiger,再次登录Binance NFT 1小时售罄

BlockChain先知

快手重点整治搬运、洗稿等方式的养号行为,自媒体平台如何净化内容生态

石头IT视角

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