生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

治理要从数据建模抓起 | 京东云技术团队

京东科技开发者

让你的创意在EdgeView 4 for Mac上绽放

影影绰绰一往直前

你好!Apache Seata

阿里巴巴云原生

阿里云 云原生 seata

淘宝商品评论数据接口(Taobao.item_review)

tbapi

天猫商品评论接口 天猫评论接口 淘宝商品评论数据接口 淘宝评论接口 淘宝评论API接口

软件测试之我见

极客罗杰

前端开发新篇章:AI助力效率激增!

程序员海军

AI 前端 年终总结

IntelliJ IDEA & Apache Dubbo,IDEA 官方插件正式发布!

阿里巴巴云原生

Java 阿里云 云原生

顺丰科技:打造智慧物流数据管理平台

新消费日报

中粮、中交、云投等众多央国企携手用友打造世界一流人才管理体系

用友BIP

人才管理

分布式云原生操作系统KubeWharf初探

雪雷

#云原生 KubeWharf

深度解读:阿里云全球首发的容器计算服务 ACS 诞生背景、核心技术与应用场景

阿里巴巴云原生

阿里云 云原生 容器计算

Go语言微服务框架重磅升级:dubbo-go v3.2.0 -alpha 版本预览

阿里巴巴云原生

Go 阿里云 云原生 dubbo

基于 eBPF 构建下一代智能可观测系统

阿里巴巴云原生

阿里云 云原生 可观测

用 Tekton 来构建镜像并推送到极狐GitLab 私有仓库

极狐GitLab

QCA9880: A multi-dimensional engine driving wireless communications

wallysSK

2023云栖大会精彩内容集锦:《云原生核心技术与最佳实战指南》电子书重磅上线

阿里巴巴云原生

阿里云 云原生

朋友们注意啦!破解脱壳接单了

Geek_7f3f61

小程序开发 定制开发 破解脱壳

HarmonyOS实践之应用状态变量共享

HarmonyOS开发者

HarmonyOS

一起学Elasticsearch系列-索引管理

Java随想录

Java 大数据 Elastic Search

两全其美:Sidecarless 与 Sidecar 模式融合的服务网格新形态

阿里巴巴云原生

阿里云 Serverless 云原生

活动回顾丨云原生技术实践营北京站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

模块一作业

大鹏

#架构实战营

官答|初始化GreatSQL报错无法找到数据目录或初始化数据字典失败

GreatSQL

故障排查 greatsql 官答

湖南等保测评3家叫什么名字?分别在哪里?

行云管家

等级保护 等保测评 湖南

用友BIP全球司库助力央国企统一资金结算,更可控更高效

用友BIP

全球司库 资金结算

Havenask分布式索引构建服务--Build Service

阿里技术

分布式 Havenask 分布式索引 Build Service

Java多线程系列9:读写锁

BigBang!

Java多线程

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

阿里巴巴云原生

阿里云 云原生 可观测

概念回顾:REST API 和 GraphQL

NGINX开源社区

微服务 Rest API graphql REST API

方太厨电,在创新科技中看见烟火人间

脑极体

方太

Excel可编辑PDF转化软件 PDF to Excel 最新激活版

胖墩儿不胖y

Mac软件 好用的办公软件推荐

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