BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Visual Studio如何提高C++性能

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2012年11月29日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

在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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT