写点什么

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

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

关注

评论

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

安装Red Giant Maxon App时提示错误11025:无法连接到Red Giant服务

理理

红巨人特效插件 Red Giant 后期制作

自动调优工具AOE,让你的模型在昇腾平台上高效运行

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号 3 月 PK 榜

一点点进步的OceanBase数据库文档!

OceanBase 数据库

数据库 oceanbase

龙蜥开发者说:给芯片以系统、给系统以社区 | 第 17 期

OpenAnolis小助手

开源 操作系统 芯片 社区 龙蜥开发者说

多功能PDF编辑工具:Nitro PDF Pro激活版

真大的脸盆

Mac PDF Mac 软件 PDF编辑 pdf编辑工具

合约跟单项目系统开发(技术源码)丨合约量化系统开发技术(成熟案例)

I8O28578624

GPT-4写代码能力提升21%!MIT新方法让LLM学会反思,网友:和人类的思考方式一样

Openlab_cosmoplat

机器学习 开源社区 智能 ChatGPT GPT-4

ByteHouse MaterializedMySQL增强优化

字节跳动数据平台

数据库 云原生 Clickhouse 企业号 3 月 PK 榜

马蹄链DAPP合约项目系统开发技术方案(成熟技术)

I8O28578624

LED灯珠对LED显示屏8大影响

Dylan

LED显示屏 led显示屏厂家 户内led显示屏

草图大师;SketchUp Pro 2022 mac中英双语

真大的脸盆

Mac 3D 建模软件 建模工具 3d建模

过等保堡垒机选择云堡垒机可以吗?有推荐的吗?

行云管家

等保 等级保护 行云管家 过等保

火山引擎DataTester:构建增长闭环,3-5人即可搭建企业增长团队

字节跳动数据平台

AB testing实战 A/B测试 企业号 3 月 PK 榜

SpringBoot整合RocketMQ,尝尝几大高级特性!

Java你猿哥

RocketMQ Spring Boot 后端 ssm Java工程师

模拟经营类游戏:城市天际线Cities Skylines 怎么设置无限金币?

理理

城市天际线 Mac城市建造类游戏 Cities: Skylines

如何解决Mac苹果上运行VMware Fusion虚拟机提示“未找到文件”

理理

VM虚拟机 未找到文件 VMware Fusion虚拟机 苹果系统虚拟机

数禾科技 AI 模型服务 Serverless 容器化之旅

云布道师

阿里云

软件测试/测试开发丨APP自动化Android特殊控件Toast识别

测试人

软件测试 自动化测试 测试开发

ADDS-DepthNet:基于域分离的全天图像自监督单目深度估计

飞桨PaddlePaddle

质量内建落地的四要素

老张

质量保障 质量内建 交付质量

修复“现在无法将USB设备连接到虚拟机,稍后尝试连接此USB设备 ”的方法

理理

usb pd18虚拟机 PD虚拟机不能联网

中康科技黄毅宁:AI+医疗,于我而言是圆梦

飞桨PaddlePaddle

深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理

Java你猿哥

Java spring ssm Spring MVC Java工程师

一文看懂数据产品经理

Taylor

产品 #数据产品经理 #数据产品 #职业发展 #产品思维

简述几种常用的排序算法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

内核不中断前提下,Gaussdb(DWS)内存报错排查方法

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

分析机构称AMD的PC市场空间正被蚕食,英特尔第12/13代酷睿处理器更具竞争力

科技之家

批量上传iOS应用程序截图的实用技巧

雪奈椰子

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

Java你猿哥

Java 面试 面经 八股文 春招‘

Icons8 for mac(logo图标素材大全)

理理

Icons8 logo图标 素材大全 Icons8 for mac

软件测试/测试开发丨app自动化之如何参数化用例

测试人

软件测试 自动化测试 测试开发

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