写点什么

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

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

关注

评论

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

面试官:数据库自增 ID 用完了会咋样?

Java 程序员 后端

项目构建系统之 Maven

Java 程序员 后端

高并发负载均衡:网络协议原理(三)

Java 程序员 后端

面试官:你如何利用-MySQL-Cluster-实现整体高可用?

Java 程序员 后端

面试时通过volatile关键字,全面展示线程内存模型的能力

Java 程序员 后端

面试败给Java并发?阿里P8提供27道并发面试解析,让你吊锤面试官

Java 程序员 后端

面试官:小伙子我们先来唠唠并发编程的几大核心知识点

Java 程序员 后端

面试被吊打系列:气得我直接把简历上的精通数据库给删掉了

Java 程序员 后端

高并发下Mysql主从延迟处理方案

Java 程序员 后端

面试官:如何提升TCP三次握手的性能?(1)

Java 程序员 后端

面试过阿里的P7大佬分享:180+道Java面试题目!含答案解析!

Java 程序员 后端

高频MySQL面试题:MySQL 索引使用什么数据结构?为什么用 B+做索引

Java 程序员 后端

1000页神仙文档,连阿里P8面试官都说太详细了,面面俱到!搞懂这些直接P6+

Java 程序员 后端

2021年11月数据库排行解读:openGauss跃居第三,人大金仓晋身前十

墨天轮

MySQL 数据库 oracle TiDB 国产数据库

面试官:小伙子先来说一下可能引起Java内存泄露的场景吧

Java 程序员 后端

面试官:数据库自增 ID 用完了会咋样?(1)

Java 程序员 后端

面试被问Tomcat整体架构设计,我哭的像个孩子

Java 程序员 后端

高可用延迟队列设计与实现

Java 程序员 后端

面试官:多线程环境下,HashMap为什么会出现死循环?

Java 程序员 后端

面试:第六章:面试题收集

Java 程序员 后端

双十一揭秘 1 :如何保证流量激发的时候不宕机?

青云技术社区

云计算 PaaS SaaS 云平台

高龄程序员的面临的处境:你有时候没有错,只是年纪大了

Java 程序员 后端

设备巡检管理系统,为企业降本增效

低代码小观

企业管理 管理系统 设备巡检 企业设备管理 设备巡检管理系统

面试官:Java-线程池中的线程复用是如何实现的?

Java 程序员 后端

面试官:小伙子你给我说说MySql并发事务处理细节

Java 程序员 后端

面试官:谈谈你对线程池的理解

Java 程序员 后端

首全网发!2021最新版字节面经刷题笔记,已霸榜GitHub

Java 程序员 后端

高可用RabbitMQ集群的搭建及原理分析

Java 程序员 后端

-So-easy!多图详解CLH锁的原理与实现,轻松把握AQS,nginx原理及应用

Java 程序员 后端

面试官:如何提升TCP三次握手的性能?

Java 程序员 后端

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