写点什么

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

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

关注

评论

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

Tapdata Cloud 版本上新!新增ClickHouse,ADB MySQL等5个数据源支持

tapdata

MySQL oracle

QCon-OPPO数据平台Cloud Lake 降本增效实践

安第斯智能云

运维 后端 数据

大数据中心通过Perforce软件版本管理系统助力动力系统开发

龙智—DevSecOps解决方案

perforce 混合动力

如期而至-用户购买时间预测(上)

索信达控股

模型 购买预测 购买行为 精准营销

质量基础设施“一站式”服务平台开发,一站式检验检测服务平台

电微13828808271

nginx负载均衡策略你知道多少?

恒生LIGHT云社区

负载均衡 服务器 ngnix

EasyRecovery如何恢复md文件

淋雨

Camtasia

区块链农产品溯源系统开发,助力农业品牌打造

电微13828808271

数据分析中应该掌握的五个数学概念

Geek_utwige

数据分析 Excel 统计学 基本概念

取代FMEA风险评估:如何在敏捷世界中管理风险

龙智—DevSecOps解决方案

风险管理 FMEA

如何为你的听众设计一张精密的地图

将军-技术演讲力教练

探秘持久内存(PMem)中无锁实现多线程安全的持久化数据结构

第四范式开发者社区

持久内存 PMem 多线程安全

数据库事务与事务隔离级别

编程江湖

数据库 java编程

提高儿童被拐意识

Tiger

28天写作

Flink是如何支持批流一体的

编程江湖

大数据 flink

Vue路由守卫有哪些,怎么设置,使用场景等

编程江湖

Vue 路由器

如何用会声会影制作简约的倒计时片头?

懒得勤快

Linux一学就会之文件的归档和压缩tar命令

学神来啦

Linux 运维 ZIP tar命令 linux云计算

等保2.0正式发布了吗?核心思想包括什么?

行云管家

网络安全 等保 等级保护 等保2.0

效率高到爆炸的IT运维软件您安装了吗?

行云管家

运维 IT运维 运维i工具

架构实战营4期第一模块作业

jialuooooo

架构实战营

Flutter 2 渲染原理和如何实现视频渲染

声网

flutter 大前端 音视频

一劳永逸,使用 PicGo + GitHub 搭建个人图床工具

AlwaysBeta

GitHub 工具 PicGo 图床

教你用 JavaScript 设计一个 Neumorphism 风格的数字时钟 (代码详解)

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

协程实现方式——从程序控制流转移谈起

Jowin

协程原理

Java 面向对象精讲【下】

XiaoLin_Java

面向对象 12月日更

服务器减少一半,TDengine在华自科技的落地实践

TDengine

数据库 tdengine 时序数据库

架构实战营模块一作业

Sindorei

「架构实战营」

免杀技术的发展

喀拉峻

网络安全 安全 信息安全 免杀

智慧社区建设解决方案,智慧社区综合服务平台开发

电微13828808271

【技术干货】前端性能优化——快速定位代码bug

云智慧AIOps社区

开源 大前端 技术分享 技术干货

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