写点什么

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

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

关注

评论

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

轻量级的隔离技术:安全沙箱

Geek_99967b

小程序

二进制之间的加减乘除运算

甜点cc

学习笔记 计算机 二进制 10月月更

python爬取csdn个人首页信息以及博客

木偶

Python 爬虫 10月月更

跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效

华为云开发者联盟

Python 华为云 图像处理 企业号十月 PK 榜

百度工程师教你玩转设计模式(适配器模式)

百度Geek说

Java 设计模式 适配器模式 企业号十月 PK 榜

Web前端小白知识点

木偶

前端 H5 10月月更

快递单信息抽取【三】--五条标注数据提高准确率,仅需五条标注样本,快速完成快递单信息任务

汀丶人工智能

nlp 知识图谱 关系抽取 事件抽取 命名实体识别

实用性强更安全,后悔没早用华为云

清欢科技

AntDB-M设计之CheckPoint

亚信AntDB数据库

AntDB aisware antdb AntDB数据库 企业号十月PK榜 企业号十月 PK 榜

数据安全不容忽视,华为云网站安全为企业保驾护航

爱科技的水月

OKR之剑·理念篇04:让OKR轻松上阵

vivo互联网技术

团队管理 OKR

你是如何使用React高阶组件的?

beifeng1996

React

React源码分析7-state计算流程和优先级

goClient1992

React

SAP CAP 项目 cds watch 生成的 index.html 的模板位置和权限控制

汪子熙

云原生 CAP Cloud SAP 10月月更

安全沙箱隔离企业风险

Geek_99967b

小程序

软件供应链端侧安全,小程序安全沙箱技术或许能帮到忙

Geek_99967b

小程序

2022全球主流一体化ERP系统十大品牌排行榜

叶落便知秋

final、finally、 finalize 有什么不同?

共饮一杯无

Java final 10月月更

HarmonyOS 3首批正式版开始推送

Geek_2d6073

Redis数据结构(二)-List、Hash、Set及Sorted Set的结构实现

京东科技开发者

数据库 redis List 数据结构 hash

全能型选手——华为云数据库GaussDB(for MySQL)

清欢科技

Java基础 | 常量、数据类型、变量、类型转换、运算符

陌上

Java、 代码 10月月更

React源码分析8-状态更新的优先级机制

goClient1992

React

Arctic 基于 Hive 的流批一体实践

网易数帆

hive iceberg LakeHouse Arctic 企业号十月 PK 榜

「经验汇总」基于TDengine的时序数据解决方案

TDengine

数据库 tdengine 时序数据库

2022机械设备行业ERP系统十大品牌排行榜

叶落便知秋

Java | Scanner关键字、random 关键字、System类和匿名函数

陌上

Java、 编程、 10月月更

华为云,安全创新的云服务标杆,助力企业数字化转型

爱科技的水月

前端react面试题(边面边更)

beifeng1996

React

Java | 面向对象

陌上

Java、 编程、 10月月更

MobTech 修改已审核通过的秒验产品信息

MobTech袤博科技

开发者 sdk 秒验 手机验证码认证

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