2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

云知声 Atlas 超算平台: 基于 Fluid + Alluxio 的计算加速实践

阿里巴巴云原生

阿里云 云原生 实践 Fluid Alluxio

架构训练营毕业总结

小卷儿

开源项目——swift开发记事本APP

思想者杰克

区块链+农业开启智能化生产时代 解决世界性食品及粮食安全问题

CECBC

20道阿里面试必问JVM面试专题(文末附送答案及JVM学习文档)

编程 程序员 JVM

软件架构治理 之 架构混沌之谜

码猿外

架构 软件架构治理

开源项目——FLutter开发录音APP

思想者杰克

0 基础架构入门 - 7(王者荣耀商城异地多活架构设计)

felix

架构实战营 0 基础架构入门

王者荣耀商城异地多活架构设计 - 模块 7

刘琦Logan

算法—算法的时间空间复杂度

思想者杰克

开源项目——FLutter/iOS/Android编写的三个计算器APP

思想者杰克

架构课毕业总结

伏波

架构

【死磕Java并发】-----深入分析synchronized的实现原理

chenssy

死磕 Java 死磕 Java 并发

pygame 小游戏前的准备工作要做足

梦想橡皮擦

11月日更

杂谈——什么是Google Fuchsia ?

思想者杰克

如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了

阿里巴巴云原生

阿里云 云原生 Prometheus 异常检测

大牛呕心力作——Kafka开发实战,助你徜徉大数据时代

redis 程序员 java编程

干货!Spring Cloud微服务架构进阶,你还不了解的都在这里

Java 程序员 架构 微服务 SpringCloud

你管这破玩意叫锁

中间件兴趣圈

高并发 java; 11月日更

小谈音视频质量检测

声网

人工智能 音视频

模块七:王者荣耀商城异地多活架构设计(作业)

紫云

阿里大牛教你如何用Dubbox+SpringBoot+Docker架构,实现双11项目

编程 程序员 springboot

HashMap 中的一个“坑”!

王磊

Java hashmap LinkedHashMap

王者荣耀商城异地多活架构设计

guangbao

开源项目——5种技术编写的7个demo工程

思想者杰克

Redis利用漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

端开发技术——FLutter开发即时通讯

思想者杰克

模块7作业

4anonymous

04 K8S之生态系统

穿过生命散发芬芳

k8s 11月日更

端开发技术——解密Flutter响应式布局.md

思想者杰克

学生管理系统架构设计文档

deng

架构实战营

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