写点什么

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

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

关注

评论

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

读书笔记-MySQL索引

yunCrush

2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机)

比伯

Java 编程 架构 面试 计算机

LeetCode题解:322. 零钱兑换,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

开源微服务运行时 Dapr 发布 1.0 版本

阿里巴巴云原生

开源 容器 微服务 开发者 云原生

从架构设计的演进来看,我们真的需要DDD

三石

DDD 软件架构 话题讨论

日记 2021年2月23日(周二)

Changing Lin

2月春节不断更

读懂框架设计的灵魂—Java反射机制

Java 编程 架构

农产品区块链溯源平台,区块链溯源方案

13530558032

2021 iOS底层提升计划

iOS底层

助力文化荟萃,区块链或可打造“新”春晚?

CECBC

区块链 春晚

第二次书摘的微信视频号直播复盘

小匚

用户体验

云算力系统开发|云算力APP软件开发

系统开发

使用 RxJS 设计实现一个下载中心功能

laoergege

大前端 RXJS

60K*17薪的面试题是什么样的,需要具备什么技术?首发“Java面试考点大全”

Java架构之路

Java 程序员 架构 面试 编程语言

量化机器人APP开发|量化机器人软件系统开发

系统开发

深入理解 Web 协议(三):HTTP 2

vivo互联网技术

Web HTTP HTTP2.0

面试腾讯T3,过关斩将直通3面,终斩获offer流下了激动的泪水(腾讯面经总结分享)

Java架构之路

Java 程序员 架构 面试 编程语言

jenkins Android 自动构建-扫码下载

三爻

架构设计篇之微服务实战笔记(四)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

区块链电子合同应用平台,区块链存证系统

13530558032

为了面试阿里巴巴、腾讯、字节跳动、京东、华为等大厂,我收集了8家大厂高频Java面试真题集锦(含答案)

Java架构之路

Java 程序员 架构 面试 编程语言

话题讨论 | 你”节后综合症“了吗?

程序员架构进阶

话题讨论 28天写作 2月春节不断更 话题王者 节后焦虑

1月干货总结:EasyDL上线时序预测模型,文档翻译全新发布

百度大脑

Protobuf源码解读之编解码

batman

protubuf zigzag varint

最值得期待的Python进阶宝典《Effective Python》第2版中文版来咯!

华章IT

Python 代码整洁 Python编程 EffectivePython Python进阶

智慧组工党务解决方案,智慧党建系统

13530558032

做一个很出色的程序员

四猿外

Java 程序员 面试 架构师 职场成长

OAtuth2.0 知多少

oauth2.0 dotnet

话题讨论 | 技术从入门到熟练是怎样的?

happlyfox

话题讨论 28天写作

快速搭建本土「Clubhouse」

anyRTC开发者

ios android WebRTC RTC 语音通话

产品训练营第五周作业

产品经理训练营

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