10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

1024!一张照片定制程序员科技感写真

阿里巴巴云原生

阿里云 云原生

数据结构 - 散列表,三探之代码实现

不在线第一只蜗牛

数据结构

如何通过指标驱动研发体系建设

思码逸研发效能

DevOps 研发效能 效能度量 研发效能管理 思码逸

推特账号被冻结怎么办?检查IP是否正常

Ogcloud

云手机 海外云手机 海外原生IP 海外IP

云原生开源开发者沙龙丨AI 应用工程化专场杭州站邀您参会

阿里巴巴云原生

阿里云 云原生

天润融通邀您参加AI破局·聚力增长行业论坛

天润融通

用户增长 AI大模型 用户运营 天润融通

解锁低成本数据库归档方案,Databend 受邀参加 TiDB 杭州地区交流会精彩回顾

Databend

时序数据库是什么:概念、特点与分类简析

Apache IoTDB

LeetCode题解:2648. 生成斐波那契数列,迭代+递归,超详细解析

Lee Chen

程序员提效的 10 个方法,建议收藏

秃头小帅oi

软件测试学习笔记丨Flask框架-请求与响应

测试人

flask 软件测试

实时特征框架的生产实践|得物技术

得物技术

flink 性能优化 数据平台 特征框架

软件测试学习笔记丨Flask框架-接口使用

测试人

flask 软件测试

JVM性能优化实战手册:从监控到调优策略

乘云数字DataBuff

性能优化 JVM 监控 可观测性

薅羊毛了!百万度算力免费申领活动狂欢继续!

九章云极DataCanvas

如何成为一名优秀的程序员,进来看看

伤感汤姆布利柏

从人员外包到测试工具、测试平台,提供全方位的测试解决方案~

霍格沃兹测试开发学社

通义灵码知识库问答增强:知识库构建与管理指南

阿里云云效

阿里云 云原生 通义灵码

如何解决SD-WAN安全问题?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

除了邮件钓鱼外,你还知道哪些常见的钓鱼攻击方式?

国科云

曹操出行借助 ApsaraMQ for Kafka Serverless 提升效率,成本节省超 20%

阿里巴巴云原生

阿里云 云原生

如果您干不动跨境外贸独立站,可以来看看反向海淘代购模式

tbapi

反向海淘 反向海淘代购系统 逆向海淘代购系统

鸿蒙开发案例:打地鼠

zhongcx

知识管理系统是什么?

ServiceDesk_Plus

知识管理系统 知识管理软件

立足云南,面向“两亚”,翻开普惠算力新篇章

九章云极DataCanvas

通义灵码知识库问答增强:知识库构建与管理指南

阿里巴巴云原生

阿里云 云原生 通义灵码

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