50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

2025 DePIN报告

PowerVerse

4S店看过来:斯科提出基于RFID技术的维修工器具智能化管理解决方案

斯科信息

RFID解决方案 RFID工具库房

低代码这么火,为什么搞砸的这么多?

秃头小帅oi

PDF Protector for Mac(PDF加密与解密工具)

Geek贝

轻松上手|TRAE + DeepSeek 打造 AI 排版智能体

火山引擎开发者社区

Trae

MyEMS:开启能源管理新时代​

开源能源管理系统

MyEMS 在行业中的应用与优势剖析

开源能源管理系统

开源 能源管理

自然语言转SQL再突破!腾讯云TCDataAgent斩获国际榜单全球第三、国内第一

极客天地

一颗荔枝50万,如何做成一个大项目?

禅道项目管理

项目管理 敏捷开发 需求管理 禅道项目管理软件 WBS

CAD图纸定位双神器:测坐标防偏移,测立面拒返工!

在路上

cad

实例解析:粮油食品仓储RFID高效管理方案

斯科信息

仓储RFID解决方案

从被动救火到主动预测!碧桂园服务以图谱技术重塑IT运维底座

智在碧得

MySQL 多版本并发控制

不在线第一只蜗牛

MySQL

MacX Video Converter Pro视频处理软件

Geek贝

Airweave - 让AI代理搜索任何应用的统一知识平台

qife122

AI代理 搜索技术

医用布草管理RFID解决方案

斯科信息

RFID解决方案 医院布草管理 斯科信息

智源研究院26届“智星”科技人才计划正式启动

智源研究院

Agentic Data时代:让数据主动思考,驱动业务增长

火山引擎开发者社区

火山引擎

容器技术与AI双向赋能:应用开发范式的效能跃迁与架构重构

xuyinyin

Disk Graph|扇形图+矩形图双模式,清理磁盘空间超直观

柠檬与橘子

借助HarmonyOS SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”

HarmonyOS SDK

HarmonyOS HarmonyOS NEXT HarmonyOS SDK应用服务

黑龙江等保测评注意事项

等保测评

小程序热更新:驱动App无感迭代的“空中引擎”技术范式

xuyinyin

CAD编号如何自动递增?两种神技,效率拉满!

在路上

cad cad看图 CAD看图王

懒懒笔记 | 课代表带你梳理【RAG课程 19:基于知识图谱的RAG】

商汤万象开发者

AI agent LLM rag

AI 英语口语 App 的核心功能

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI英语口语

Pickle 开源 AI 桌面助手 Glass:捕捉屏幕生成结构化信息;邱锡鹏团队开源对话语音模型 MOSS-TTSD丨日报

声网

引迈信息6周年:数智领航,共赴新程

引迈信息

电脑卡顿反应慢的原因及解决方法

阿拉灯神丁

电脑选购 CleanMyMac 电脑运行缓慢 Mac电脑使用教程 mac电脑维护工具

火山引擎Data Agent全面上线!以企业级数据智能体,重构数据应用范式

火山引擎开发者社区

火山引擎

TypeScript结构化类型初探

电子尖叫食人鱼

typescript

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