大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

聊聊hashmap

急需上岸的小谢

11月月更

企业级业务架构设计笔记三:设计起点与设计过程

程序员架构进阶

架构 业务架构 11月日更 11月月更

RESTful API类渗透测试的特点

阿泽🧸

RESTful API 11月月更

AST 初探深浅,代码还能这样玩?!

蔡农曰

前端 后端 代码

[力扣] 剑指 Offer 第四天 - 0~n-1中缺失的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

Java中的System类

共饮一杯无

Java 11月月更 system类

Dockerfile 常用命令

蜗牛也是牛

其实你的下班时间,被 Excel 预定了

叶小鍵

极客时间运维进阶训练营第四周作业

老曹

2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m。 小团很想再次让这两个数列变

福大大架构师每日一题

算法 rust 福大大

【愚公系列】2022年11月 微信小程序-场景值

愚公搬代码

11月月更

聊聊ThreadLocal

急需上岸的小谢

11月月更

部署代码质量检测服务 sonarqube,基于命令、shell 脚本和 pipline 实现代码质量检测

忙着长大#

jenkins

MongoDB源码学习:Mongo中的OpRunner

云里有只猫

mongodb 源码学习

开发H5都会喜欢这个Vite插件

小鑫同学

前端 插件 11月月更

第九期 - 模块七

wuli洋

制订需求分析框架和分析计划

穿过生命散发芬芳

需求分析 11月月更

jenkins pipline 基本语法

忙着长大#

kitti数据集在3D目标检测中的入门

Studying_swz

3D点云 11月月更

iMazing2022免费试用版ios设备管理器

茶色酒

imazing imazing2023

日期时间类(Date、DateFormat、Calendar)

共饮一杯无

Java 11月月更 日期工具

主成分分析PCA与奇异值分解SVD-降维后的矩阵components_ & inverse_transform

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

SpringCloud相关组件

急需上岸的小谢

11月月更

支持向量机-支持向量机分类器原理

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

主成分分析PCA与奇异值分解SVD-PCA对手写数据集的降维 & 用PCA做噪音过滤

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

工业互联网数据处理架构

刘旭东

kafka IoT 工业互联网

聊聊Go里面的闭包

秦怀杂货店

Go 函数式编程 闭包

CleanMyMac2023注册机mac系统清理工具

茶色酒

CleanMyMacX CleanMyMac X

极客时间运维进阶训练营第四周作业

chenmin

基于k8s发布系统的实现

tiandizhiguai

云原生 K8s 多集群管理

【web 开发基础】PHP 的函数工作原理 (28)

迷彩

函数 web开发基础 11月月更 结构化编程 函数的工作原理

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