`

使用 Adobe Scout 执行准确分析

 
阅读更多

从您开始使用 Adobe Scout 那一刻起,就能够访问海量的数据。这涉及到您的内容的几乎每个方面;从 ActionScript 执行到 Flash Player 执行的各个渲染步骤。您可能首先会尝试查找内容中的性能问题,但在这么做之前,理解此数据是如何收集的非常重要。

Flash Player 发送给 Scout 的每部分数据都有一定的成本。除了执行您的内容,Flash Player 还必须花时间进行自测量和传输此数据。这意味着与正常执行时相比,Flash Player 在您使用 Scout 进行分析时具有不同的 行为。根据您选择收集何种数据,这种区别可能很细微,也可能很明显。并且根据您尝试解决的问题,这不一定处于可接受范围内。

在本文中,您将学习 Flash Player 如何度量数据并将其发送到 Scout,以及如何决定收集哪些数据。这可帮助您更准确地回答有关内容的行为和性能等问题。通过更透彻地理解 Scout 中各种数字的含义,可提高您在分析时的自信。

注意,这不是 Scout 用户界面的使用指南。如果不知道如何使用 Scout,或者不同面板的用途,应首先阅读 入门指南

在 Scout 中获取来自 Flash Player 的数据

开始使用 Scout 时,您会注意到只要开始加载任何 Flash 内容,就会打开一个新会话并开始收到数据。此数据称为遥测数据 。基本上它就是 Flash Player 在执行内容时获取的一个度量数据流。为此,Scout 必须能够告诉 Flash Player 发送何种数据,Flash Player 必须能够连接到 Scout 并发送数据。

Scout 如何告诉 Flash Player 发送数据?

您的主目录中有一个名为 .telemetry.cfg 的文件,Scout 使用它告诉 Flash Player 做什么。这个文件存储 Scout 正在哪个机器上运行、使用的端口和 Flash Player 应收集的数据的相关信息(也就是您在 Scout 中的Settings for New Sessions 下选择的内容)。如果使用相同的机器运行 Scout 与 Flash Player,应该无需接触此文件。只要您更改了任何设置,Scout 就会向该文件写入相应的内容,Flash Player 只要加载一个新的 SWF 就会读取该文件。在 Scout 中启动一个会话后,您将无法更改设置;这些更改仅应用到新会话。

如果在不同的机器上运行 Scout,而且希望 Flash Player 向它发送数据,就需要手动设置 .telemetry.cfg 文件。 入门指南 入门指南解释了具体的操作方法。请记住,您需要配置 Scout 在您于此文件中指定的相同端口上进行侦听。可在 Scout 中的 Preferences 对话框中设置此端口。

如果希望在一个移动设备上分析 Adobe AIR 内容,您可从合适的应用程序商店下载针对 iOS、 Android 和Kindle 的 Scout Companion App。该应用程序连接到一个 Scout 实例,与 Scout 通信来确定您选择了哪些数据设置。此过程不会使用 .telemetry.cfg 。相反,这个配套应用程序直接将此信息转发给正在运行的 Adobe AIR 实例,所以这些实例知道将哪些数据发送给 Scout 以及在何处发送它们。

Flash Player 如何将数据发送给 Scout?

启用 Telemetry 后(也就是说,您的主目录中有一个 .telemetry.cfg 文件),只要 Flash Player 加载一个新的 SWF,它就会尝试打开与 Scout 的一个 TCP 连接。如果连接失败,Flash Player 会禁用 Telemetry 并继续运行,您的内容不会遇到任何分析开销。如果连接成功,Flash Player 会开始向 Scout 传输数据,后者将其显示为一个新会话。系统以一种称为 AMF 的压缩二进制格式发送数据,Scout 会在呈现给您之前解析数据。保存 FLM 时,您实际上保存的是 Flash Player 发送的相同二进制格式的原始数据。这意味着当您打开一个 FLM 时,Scout 实际上只是快速重放它从您的内容中收到的数据。

决定收集哪些数据

Scout 收到的每部分数据都必须由 Flash Player 发送。您请求的数据越多,Flash Player 必须完成的额外工作就越多,因此对内容的影响就越大。为此,在决定收集哪些数据之前一定要考虑您希望回答的问题 类型, 这样才知道在 Settings for New Sessions 下选中哪些复选框(参见图 1)。

图 1:使用 Scout 中的 Settings for New Sessions 面板选择您希望获取的数据。
图 1:使用 Scout 中的 Settings for New Sessions 面板选择您希望获取的数据。

如果希望度量性能,您应限制为仅收集低开销数据:Basic Telemetry、 ActionScript Sampler 和 CPU Usage 类别。这些类别经过了严格设计,所以和执行您的内容相比,Flash Player 只需尽可能少的时间收集数据并将其发送到 Scout。这意味着您可信任在 Scout 中看到的时间度量,这在查找性能问题时尤为重要!

如果希望收集有关渲染 的详细信息,也可选择具有高开销的设置:DisplayList Rendering Details 和 Stage3D Recording。这些设置对调试图形相关问题很有用;它们会分别让您看到在每个帧上绘制的 DisplayObject 以及 Stage3D 命令的准确执行顺序。但是,这种细节水平需要一定的代价。Flash Player 必须花多得多的时间来收集数据并将其传输到 Scout,这会降低您的内容的运行速度。如果决定收集此数据,那么在 Scout 中看到的计时信息将不准确。由于 Flash Player 正在执行额外的工作,因此一些执行时间看起来将比实际的要长。不仅如此,结果将具有偏差 ,因为一些活动的度量方式比其他活动更详细。

请记住,如果希望准确的性能数据,请保持低开销!您不能同时获得详细的渲染数据和准确的时间度量。这就像在乌塞恩 • 博尔特跑 100 米时对他进行采访。在您将话筒对着他时,他无法打破任何世界记录!

Basic Telemetry 和 ActionScript Sampler

如果对性能感兴趣,您应该打开 Basic Telemetry 和 ActionScript Sampler 设置。它们实际上会收集两种不同类型的数据,这两种数据最初可能引起混淆。Flash Player 执行您的内容时,有两个核心部分会协同工作:

  1. Flash Player,它执行实际的工作并与外部世界进行联系。除了其他工作,它还将内容渲染到屏幕并播放声音和视频,以及处理输入事件和网络。
  2. 您的 SWF,它基本而言是一组静态资源(比如图像)和动态资源(比如 脚本  时间轴 )。这些动态资源由 Flash Player 执行并会告诉它怎么做。

Flash Player 代码库是仪器化的 ,所以它可在关键位置度量自己的情况。它度量自己用了多长时间执行关键代码块,以及它的关键数据结构使用了多少内存。此处 “关键 ” 这个词很重要。如果 Flash Player 度量了它在每个函数中所花的时间,它将具有很高的开销,而且运行速度比未分析它时会慢得多。因为它仅度量已知会花大量时间的活动,所以这些度量的开销微乎其微。换句话说,您在 Scout 中看到的时间非常准确。此数据称为 Basic Telemetry ,Scout 在绘制帧时间轴时会使用它,Summary、Activity Sequence 和 Top Activities 面板中也会使用它。注意,Flash Player 仅报告所花的时间长于 5 微秒的活动;任何短于此时间的活动都不会在 Scout 中显示。

Scout 还会显示 SWF 中的 ActionScript 3 执行信息。打开 ActionScript Sampler 设置后,您就可以在 ActionScript 面板中看到此信息。此数据与 Basic Telemetry 有很大的区别。Flash Player 不会提前知道您的代码将是什么,所以它不能提前测量。而且如果 Flash Player 打算记录每个函数调用并将它们发送到 Scout,会增加极大的开销,进而导致结果不准确。相反,Flash Player 在执行期间会对您的 ActionScript 进行抽样 。每隔一毫秒,它就会获取调用堆栈的一个快照 ,该快照表示您的代码在特定的时间点所做的操作。

在 Scout 的 ActionScript 面板中,会在您选择的帧范围上聚合此数据,让您看到在每个函数上平均花的时间比例。此数据仅是近似值 (它仅显示为最接近的毫秒数,因为这是抽样频率),但随着您查看的抽样越多(比如选择更多的抽样),它会越来越准确。您始终应该注意 ActionScript 面板中的数据质量指示器。沮丧的面部(参见图 2)会告诉您,您查看的数据量不足以使它具有统计意义,而高兴的面部(参见图 3)表示数据非常准确,您可用它确定哪些函数的开销最高。

图 2:抽样太少时 ActionScript 面板中的警告
图 2:抽样太少时 ActionScript 面板中的警告

图 3:选择足够多的帧,让结果具有统计意义
图 3:选择足够多的帧,让结果具有统计意义

理解测量和抽样之间的区别非常重要,因为两种类型的数据具有不同的准确度。想象您在一辆过山车上,希望测量它开了多长时间。使用测量 使用测量方法,您可手持一个秒表,在它启动时启动秒表,在它停止时停止秒表(参见图 4)。这可为您提供非常准确的结果(比如接近最近的秒数),但需要花时间启动和停止秒表,以及记录每次度量结果。如果每次坐过山车时都这么做,您的主题公园活动时间将更长(假设您一次只能做一件事)。对于此示例,假设您测量的时间为 23 秒。

图 4:使用测量方法度量持续时间
图 4:使用测量方法度量持续时间

借助抽样 方法,无需携带秒表,您设置一个照相机每 10 秒(或您选择的其他间隔)对过山车拍一张照片(参见图 5)。这更加轻松,因为您无需手持秒表并执行度量,但它也不太准确。游玩结束后,您查看在行进过程中拍摄的照片(在本例中为 2 张)并乘以每张照片之间的时间间隔(在本例中为 10 秒)。这为您提供了大约 20 秒的游玩持续时间。

图 5:使用抽样方法度量持续时间的过程。
图 5:使用抽样方法度量持续时间的过程。

抽样方法的准确性要低于测量方法,但您重复抽样的时间越长(多次乘坐过山车),相对误差会更小。这类似于 ActionScript Sampler 的做法。 “照片” 是调用栈的快照(称为抽样 ),它们每隔几毫秒创建一次。

Scout 中一项很有帮助的功能是以真正有用的方式将两种类型的数据组合 在一起。例如,Flash Player 中接收鼠标事件的代码是仪器化的,所以会在 Basic Telemetry 中显示它。这为您提供了对处理此事件所花时长的微秒级精度的度量。如果拥有 ActionScript 3 事件处理函数,那么 Flash Player 在执行期间还会收集代码的抽样。在 Scout 中,转到 Top Activities 面板并单击事件时,Scout 将过滤 ActionScript 面板,仅显示在处理这个特定事件期间正在运行的代码(参见图 6)。

图 6:使用 Top Activities 面板中测量的数据对 ActionScript 面板中抽样的数据进行过滤。
图 6:使用 Top Activities 面板中测量的数据对 ActionScript 面板中抽样的数据进行过滤。

Basic Telemetry 和 ActionScript Sampler 数据也组合在 Summary 面板中。此面板中的大部分数据都来自 Basic Telemetry,但如果打开了 ActionScript Sampler,您可扩展 ActionScript 类别,详细查看其中哪个包花了最多的时间。请记住,此数据是近似值,因为它是通过抽样计算的(不同于 Summary 面板中的其他数据)。这使用 “≈” 符号表示(参见图 7)。

图 7:Summary 面板显示了测量的数据和抽样的数据
图 7:Summary 面板显示了测量的数据和抽样的数据

以下是两类数据的总结:

  • Basic Telemetry (Activity Sequence 面板、Top Activities 面板)为您提供了 Flash Player 所执行操作的时间度量值。该数据由 Flash Player 的轻量型测量仪器获得,精确到微秒。
  • ActionScript Sampler (ActionScript 面板)获取 ActionScript 3 代码所执行操作的定期快照。每隔几毫秒,它就获取调用栈的一次抽样,不断聚合此数据以显示您在每个函数中平均花费的时间比例。时间是近似值,但会随着您选择的帧越多而变得越准确,所以一定要确保看到高兴的面部图案!

CPU Usage

如果打开 CPU Usage 设置,Flash Player 将获取它使用的 CPU 时间的定期度量值。它通过查询操作系统来获取此数据,所以它对应于您在 OS X 上的 Activity Monitor 或 Windows 上的任务管理器中看到的内容。它的开销很低,所以您可在分析内容性能时打开它。

DisplayList Rendering Details

如果在内容中使用了 Flash DisplayList,那么 DisplayList Rendering Details 设置允许您记录有关在每个渲染通道中重新绘制了屏幕哪些部分的详细信息,以及渲染每个 DisplayObject 所花的时间。可在 Scout 的 DisplayList Rendering 面板中看到此信息。具体来讲, Heat Map 模式图形化地显示哪些屏幕部分的渲染时间最长。

收集此数据的开销取决于 DisplayList 中的对象数量。这可能需要很高的成本,所以不应在打开此数据设置时查看内容的总体性能;仅查看渲染每个 DisplayObject 所花的相对时间。一个出色的工作流如下所示:

  1. 只有启用 Basic Telemetry 后才会分析您的内容,查看它花了多长时间执行 DisplayList Rendering,并与其他活动对比,比如执行 ActionScript。
  2. 如果 DisplayList Rendering 存在问题(因为它占用了太长时间),可打开 DisplayList Rendering Details 设置,并再次分析您的内容。然后可使用 Scout 的 DisplayList Rendering 面板确定问题的来源。

Stage3D Recording

如果在内容中使用了 Stage3D(无论是直接使用,还是通过 Starling 或 Away3D 等框架使用),Scout 可提供有关正在执行的操作的详细信息。Flash Player 中的 Stage3D API 是仪器化的,所以它可将每个 Stage3D API 调用及其参数发送给 Scout。然后可在 Scout 内重放这些命令,查看每个场景的渲染方式,一次查看一个绘制调用。可以这么做是因为 Scout 自身内有一个 Stage3D 引擎副本。

打开 Stage3D Recording 设置会生成大量数据,具有很高的开销。这是因为 Flash Player 必须将每个缓冲区、纹理和 AGAL 程序发送给 Scout,还要发送您对 Stage3D API 执行的每次函数调用的详细信息。这包含大量数据,而且收集和发送它将减缓您的内容的执行速度。如果希望调试渲染问题,可以打开 Stage3D Recording,但绝不应在启用此数据设置后执行性能分析。即使您只是尝试这么做,ActionScript 面板也会发出警告(参见图 8)。

图 8:打开 Stage3D Recording 后,ActionScript 面板中的警告
图 8:打开 Stage3D Recording 后,ActionScript 面板中的警告

如果担忧影响性能,应执行以下步骤:

  1. 仅在启用 Basic Telemetry 和 ActionScript Sampler 的情况下分析内容。在 Scout 的 Summary 面板中,展开 ActionScript 类别并查看 Stage3D API 中所花的时间比例。ActionScript 面板将显示哪个具体的函数调用花的时间最常。
  2. 如果您的内容在 Stage3D API 中花了太长的时间,您可打开 Stage3D Recording 。Scout 将在 Stage3D Rendering 面板中显示您的内容所做的每个 Stage3D API 调用。这对查找性能问题的根源很有用,比如发出了太多绘制调用或太频繁地更改 GPU 状态。

如果需要调试渲染问题,比如 AGAL 程序没有按预期运行,可直接跳到第二步。但是请记住,希望改善内容的性能时,首先应该确定 Stage3D 是不是问题的一部分,然后再尝试优化它!

因为 Stage3D Recording 会将大量数据发送给 Scout,所以很容易在几分钟内耗尽数 GB 的内存。由于您可能希望在内容运行一段时间后调试渲染问题(例如,确定为什么 22 级的巨龙没有影子),所以 Scout 提供了一种延迟记录 模式。如果将 Recording 设置从 Immediate 改为 Delayed ,Flash Player 会发送与以前相同的详细 Stage3D 数据,但在 Scout 中不会将这些数据加载到内存中。单击 Stage3D Rendering 面板中的 start recording 时,Scout 仅将必要的数据加载到内存中(比如您的网格和纹理)。这让您能够从那一刻向后延迟命令,而无需使用太多内存。

在 Scout 中获取准确数据的技巧

您已了解为什么选择正确的数据设置来使用 Scout 进行准确的分析很重要。但同样至关重要的是考虑您分析的环境 。如果未考虑,最终可能得到非常有误导性的数据,以及将时间浪费在修复并不真正存在的问题上!以下是在使用 Scout 执行性能分析时要考虑的一些重要技巧:

  • 使用 Flash Player 的发行版 进行分析。其他版本(比如调试版)具有不同的性能特征。
  • 使用 发行版 SWF 。调试版 SWF 的运行速度慢得多,因为它们的 ActionScript 字节代码会经过大量测量,从而帮助您调试内容。
  • 使用您预计用户将使用的相同硬件、操作系统和浏览器 来进行分析。您的内容可能在超快的开发机器上能很好地运行,但它在普通用户的机器上的运行状况如何?
  • 在分析期间不要运行其他程序或 SWF 。这会影响 Flash Player 所执行的测量工作,最终会导致报告有误导性的信息。运行尽可能少的程序,关闭您可能打开的任何其他浏览器标签。
  • 在分析时避免使用 VMware 或 设备模拟器 。如果可能,使用本地机器或设备,因为它的性能特征最接近您的用户将体验到的性能特征。如果需要使用 VMware,请确保将它设置为使用多于一个核心。如果仅有一个核心,它将无法正确运行 Scout(这是一个已知问题)。
  • 如果在移动设备上进行分析,请确保您的网络拥有足够的带宽 供 Flash Player 向 Scout 发送数据。如果没有,网络连接将成为瓶颈,这将在 Scout 中为您提供有误导性信息。

 

转自:http://www.adobe.com/cn/devnet/scout/articles/accurate-profiling-with-scout.html

作者: Michael Smith

分享到:
评论

相关推荐

    Adobe Scout使用文档

    Adobe Scout 是一款强大的分析工具,专为桌面和移动平台上的Flash内容设计,它提供了深入洞察Flash运行时的能力,弥补了过去开发人员无法查看Flash内部运作的不足。这款工具极其易用,无需复杂的安装过程,使得...

    Adobe Scout apk

    Adobe Scout flash性能优化必备神器,详细内存消耗、帧速影响原因等一目了然!

    Adobe Scout

    FLASH新的测试工具。可以远程监测FLASH运行性能和内存情况。

    scout帮助文档

    - **定义与功能**:Adobe Scout是一款专为桌面及移动平台上的Flash内容提供深入分析能力的工具。相较于之前的性能分析工具,如Flash Builder中的Profiler,Adobe Scout具有更为强大的功能,能够帮助开发者深入了解...

    SCOUT 2.0用户手册_2106301

    本用户手册详细介绍了该机器人的安全信息、操作、保养以及开发等关键环节,旨在确保用户能够安全有效地使用和扩展SCOUT 2.0。 在安全方面,SCOUT 2.0不包含完整的自主移动功能,如自动防撞、防跌落或生物接近预警,...

    使用 OPC Scout 测试 S7 OPC Sever.docx

    本文档的重点是指导用户如何使用 OPC Scout 来测试 S7 OPC Server。S7 OPC Server 是针对西门子 S7 系列 PLC(可编程逻辑控制器)设计的,它可以提供对 PLC 数据的访问服务。OPC Scout 可以帮助确认 OPC Server 是否...

    SIMOTION SCOUT Basic functions

    西门子SIMOTION SCOUT基本功能手册涵盖了如何使用西门子SIMOTION SCOUT进行编程和操作,其中详细介绍了SCOUT的基本功能、系统概念、技术对象的编程方法、错误处理、执行系统的编程、系统周期时钟、通用标准功能的...

    scout操作手册

    综上所述,《Scout操作手册》是一本非常全面且实用的指导手册,它不仅包含了软件的安装与配置方法,还涵盖了故障诊断、技术数据及常见问题解答等内容,能够有效地帮助用户快速掌握Simotion Scout软件的使用技巧,...

    Scout 100 中文手册.pdf

    根据提供的文件内容,Scout 100是一款由GE检测控制技术推出的便携式数据采集、分析和平衡仪器,属于Bently Nevada资产状态监测系列中的新产品。接下来,我将详细介绍这款产品的一些核心知识点。 ### 核心功能与应用...

    simotion scout 配置手册

    说明了SIMOTION Scout可以与哪些其他产品或系统配合使用,以及这些组合的优势所在。 #### 十三、技术数据 提供了SIMOTION Scout的相关技术参数,包括软件版本信息、支持的操作系统等。 #### 十四、法律信息 这...

    flash性能查看

    Adobe Scout CC是一款专门用于查看和分析Flash性能的专业工具,它为开发者提供了深入洞察其Flash项目性能的能力。这款工具主要面向游戏开发者、动画制作者以及任何依赖Flash技术创建互动内容的专业人士。 首先,让...

    SCOUT MINI用户手册1.0协议1

    虽然SCOUT MINI本身并没有内置完整的自主移动机器人的安全功能,但通过用户进行的风险评估和外部安全设备的添加,仍然可以保障其在各种环境下的安全使用。此外,用户在操作前,需要仔细阅读操作手册,了解设备的安全...

    Fm2010 genie scout FM球探工具

    通过对比分析,玩家可以准确地找到符合球队需求的最佳人选。 2. **实时更新**:Genie Scout会随着游戏进程自动更新球员数据,确保玩家获取的信息始终是最新的,避免因数据滞后而导致的决策失误。 3. **高级筛选**...

    simotion_scout_安装步骤.pdf

    安装SIMOTION Scout是使用其功能的第一步,本文档提供了详细的安装步骤,针对初学者,尤其是那些希望入门学习SIMOTION的用户。 在安装SIMOTION Scout之前,了解其软硬件要求是很重要的。根据文档描述,最低硬件需求...

    Laravel开发-laravel-scout

    在控制器中,你可以使用 `toSearchableArray()` 方法将模型转换为适合搜索引擎的数组格式,然后使用 Scout 的 `search()` 方法执行查询: ```php use App\Models\Product; use Laravel\Scout\Builder; $products =...

    SCOUT MINI用户手册2.0协议1

    SCOUT MINI用户手册2.0协议1主要涵盖了安全、操作、保养和环境等方面的重要信息,是用户在使用这款智能移动底盘前必须了解的指导材料。SCOUT MINI是一款四轮四驱的紧凑型机器人,具有强大的越野性能和灵活性。它继承...

    scout 2.0用户手册V4.0.01

    在环境方面,Scout 2.0的使用环境温度范围是-10℃~45℃,用户需要确保设备的IP防护等级与使用环境相匹配,以防止水分和尘埃对设备造成损害。此外,因为Scout 2.0不具备自动避障功能,所以遥控操作时必须在开阔区域...

    Scout method

    Scout method椭偏仪软件的使用说明书主要指导用户如何操作该软件进行椭偏光谱分析。在使用软件进行材料分析之前,用户需要准备相关材料的光学属性数据,例如折射率、吸收系数等参数,这些数据通常需要从材料数据库中...

    Laravel开发-laravel-scout-sphinx

    使用 Scout 的 `search()` 方法执行搜索,它会返回一个包含匹配结果的集合。例如: ```php $results = User::search('query')->get(); ``` 5. **排序与过滤** Scout 允许你在搜索时指定排序规则,或者添加额外...

Global site tag (gtag.js) - Google Analytics