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

Visual Studio 2010 特性聚焦:分析和调试并行应用程序

  • 2008-10-30
  • 本文字数:1115 字

    阅读完需:约 4 分钟

Visual Studio 2010 将为分析和调试并行应用程序带来一些新的功能。他们试图解决的一个主要问题是,在设计时的源代码和运行时代码之间存在的黑盒。在设计时,代码使用 PLINQ 或 Parallel.For 以声明的方式来表示;而当运行时,它又以独立线程的方式来表示。直到调试器介入之前,两层之间发生的事情都无法直接 地查看到。为了解决这个问题,微软打算把调试器的关注点提高到一个更高的抽象层次,称之为任务级。

若要理解它的工作方式,重点是要理解 PLINQ 和 Parallel.For 都是构建于任务并行库(Task Parallel Library)之上的。虽然这样说有点过于简单化,但人们可以把并行操作认为是一些任务集合,它们依次运行在线程集合之上。

为了看到现在 VS 里的任务发生的事 情,开发人员需要独立地检查每个线程。通过 VS 2010,一个新的窗口将直接显示任务。每个任务被显示为一个包含了它的调用堆栈和传入参数的信息框中。共享同一个调用堆栈的多个任务将会在同一个信息框 中列出。如果这些任务具有公共的基任务,但在调用堆栈中被进一步拆分,那么它们将使用单独的子信息框分别显示它们。

除了堆栈,人们还可以查看方法视图。这里关注的是一个给定方法,而不是关注它如何被调用,它通过父子信息框显示被选定方法调用了哪些方法,以及它被哪些方法调用。

一个独立的视图还显示了任务是如何与它创建的子任务相关联的。默认情况下它使用一个层级网格来显示诸如任务是否已经开始和它正在等待什么之类的信息。它还支持通过任意列进行分组和排序。

在分析功能上,新增了三个新的工具。第一个是一个跟踪器,用于显示每个处理单元(Core)的 CPU 使用情况。对于每个时间片,它用一个堆积条形图 来显示有多少处理单元被应用程序使用、空闲或被其他系统进程使用。这就允许开发人员可以快速地查看应用程序是否消耗了提供给它的所有资源。

第二个工具为每个线程显示了一条时间线。在任何给定 的时间点上,对于线程的调用堆栈和延时时间都可以显示出来。延时是按照特定的类型来分组的,例如代码在执行中、在等待锁中或在等待 IO 处理中。当使用类似 Parallel.For 这样的构造的时候,标记符将标明并行循环什么时候开始和结束。

第三个工具可以显示线程是如何映射到处理单元上的。它以时间线的方式来显示,人们能够快速地查看到用不同颜色来显示的线程如果在处理单元之前迁移的话,上下文切换是否太频繁。这非常重要,因为每次一个线程跳到不同的处理单元,就是使 CPU 中的高速缓存暂时无效的最好时机【译者注:这样可以充分利用高速缓存】。

Steve Teixeira、Daniel Moth 和 Sean Nordberg 在 Channel 9 的视频中演示了这些特性。

查看英文原文: Visual Studio 2010 Feature Focus: Profiling and Debugging Parallel Applications

2008-10-30 22:291567
用户头像

发布了 254 篇内容, 共 64.4 次阅读, 收获喜欢 2 次。

关注

评论

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

深入解析Flutter下一代渲染引擎Impeller

字节跳动终端技术

flutter 字节跳动 渲染器 Impeller 渲染方案

嘎嘎牛逼!对标P7+)互联网Java高级架构师面试标准手册

Geek_Yin

阿里巴巴 程序员人生 P7架构师 #java 程序员面试、

Zebec社区利好频传,Galaxy Project上领取专属Zebec OAT

股市老人

翻译 | Kubernetes Operator 对数据库的重要性

RadonDB

Kubernetes operator RadonDB 数据库·

注册荣耀开发者,惊喜抽好礼!邀请5位好友赢50元购物卡~

荣耀开发者服务平台

开发者 手机 智慧屏 荣耀 honor

字节大佬的「算法界Top1笔记」火爆Github,短时间获上万star

Geek_Yin

编程 程序员 数据结构 算法 #java

聊天平台源码:选好框架是搭建聊天平台的基础

开源直播系统源码

软件开发 直播系统源码 语音直播系统 语音聊天app

报名 | 业务出海如何构建数据底座新范式?StarRocks 和 AWS 邀您同塑新思维

StarRocks

数据库

开源一夏 | SSO单点登录流程源码学习

六月的雨在InfoQ

redis 开源 SSO 单点登录 8月月更

2022秋招,Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

退休的汤姆

面经 社招 Java工程师 秋招 Java八股文

Python 教程之输入输出(8)—— print() 中的 Python 结束参数

海拥(haiyong.site)

Python io 8月月更

编程培训班怎么才能选择出靠谱?

小谷哥

前端mcok原来可以如此丝滑

Liam

前端 前端开发 Postman Mock 前端工具

web前端课程培训班哪里好?

小谷哥

2022年最新【Java经典面试800题】面试必备,查漏补缺;多线程+spring+JVM调优+分布式+redis+算法

Geek_Yin

编程 程序员 金九银十 #java Java面试八股文

通过部署流行 Web 框架掌握 Serverless 技术

阿里巴巴中间件

阿里云 Serverless 云原生 函数计算

Shopee商家数字商品可配置系统设计与实现

Shopee技术团队

前端 Shopee

签约计划第三季获奖名单公布,一起见证百人成团!

InfoQ写作社区官方

热门活动 签约计划第三季

Go Go 简单的很,标准库之 fmt 包的一键入门

梦想橡皮擦

Python 爬虫 8月月更

大数据编程培训班怎么样?

小谷哥

jdk11或以上的module错误

Geek_5829b6

jdk Module

武汉大数据培训班学习要多久

小谷哥

2022秋招,Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

Geek_Yin

编程 程序员 java面试 金九银十 #java

你需要的露营预约管理系统来啦!最新的露营案例奉上!

天天预约

SaaS应用 预约工具 露营 营地管理

出海季收官,速来 Get 全球化发展实操手册

融云 RongCloud

Python自学教程2:大牛们怎么写注释

和牛

Python 测试 8月月更

App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用

阿里巴巴中间件

阿里云 Serverless Terraform 阿里云云原生

【Java秋招面试宝典300题】阿里P8爆肝2个月呕心整理,挑战30天打卡秋招上岸!(基础、Spring、MySQL、JVM、微服务分布式)

退休的汤姆

Java 面经 校招 Java工程师 秋招

开发者,有没有完全自主的国产化数据库技术?

Albert Edison

数据库 云原生 中间件 8月月更 开源SPL

上海大数据培训学习怎么样

小谷哥

Visual Studio 2010特性聚焦:分析和调试并行应用程序_.NET_Jonathan Allen_InfoQ精选文章