Skip to main content
QUICK REVIEW

[论文解读] Using High-Rising Cities to Visualize Performance in Real-Time

Katsuya Ogami, Raula Gaikovina Kula|arXiv (Cornell University)|Sep 18, 2017
Software System Performance and Reliability被引用 3
一句话总结

本文提出了一种实时、三维的CodeCity可视化方案,用于在高层建筑城市中动态呈现软件性能,其中建筑高度反映执行时间,城市结构映射到代码组织结构。该原型可实现实时检测运行时性能瓶颈和内存泄漏,通过交互式、空间化的Java应用程序性能分析,显著提升开发者的态势感知能力。

ABSTRACT

For developers concerned with a performance drop or improvement in their software, a profiler allows a developer to quickly search and identify bottlenecks and leaks that consume much execution time. Non real-time profilers analyze the history of already executed stack traces, while a real-time profiler outputs the results concurrently with the execution of software, so users can know the results instantaneously. However, a real-time profiler risks providing overly large and complex outputs, which is difficult for developers to quickly analyze. In this paper, we visualize the performance data from a real-time profiler. We visualize program execution as a three-dimensional (3D) city, representing the structure of the program as artifacts in a city (i.e., classes and packages expressed as buildings and districts) and their program executions expressed as the fluctuating height of artifacts. Through two case studies and using a prototype of our proposed visualization, we demonstrate how our visualization can easily identify performance issues such as a memory leak and compare performance changes between versions of a program. A demonstration of the interactive features of our prototype is available at https://youtu.be/eleVo19Hp4k.

研究动机与目标

  • 解决传统基于快照的分析器(如VirtualVM和JProfiler)存在的延迟和结构洞察有限的问题。
  • 实现在GUI密集型应用程序(如游戏)中的程序执行过程中实时性能监控。
  • 通过在三维城市隐喻中同时可视化代码结构和执行动态,提升开发者对性能的理解。
  • 评估实时可视化在检测软件演化过程中的性能回归和线程相关问题的实际可行性。
  • 探索CodeCity隐喻在性能分析中超越基础度量指标的可扩展性和可用性。

提出的方法

  • 将Java程序组件(类、包)映射为3D城市元素(建筑、区域),以表示代码结构。
  • 通过建筑高度的波动来表示程序执行期间的实时CPU或内存使用情况。
  • 将基于JVM的应用程序的实时性能分析数据集成到可视化引擎中,实现实时更新。
  • 实现一个交互式原型,使开发人员能够观察用户交互或代码更改后性能的变化。
  • 利用CodeCity隐喻保留组件之间的空间关系,增强对性能热点的感知。
  • 通过案例研究验证可视化在检测线程泄漏和跨软件版本性能变化方面的能力。

实验结果

研究问题

  • RQ1与传统基于快照的分析器相比,程序执行的实时三维可视化是否能更有效地检测性能瓶颈?
  • RQ2CodeCity隐喻在揭示代码组件之间结构关系及其性能行为方面有多高效?
  • RQ3该可视化能否在交互式应用程序使用过程中实现实时检测内存泄漏或线程相关问题?
  • RQ4性能的动态、空间化表示如何增强开发者在软件维护和重构过程中的理解?
  • RQ5在大规模或复杂软件系统中,使用CodeCity进行性能分析的实际限制和可扩展性如何?

主要发现

  • 实时可视化使开发人员能够立即检测到一个Tetris游戏原型中的线程泄漏,表现为孤立线程导致建筑高度持续波动。
  • 该原型成功可视化了不同版本软件系统中的性能退化与改善,支持版本对比。
  • 开发人员可通过观察用户交互期间哪些建筑(类)出现最剧烈的高度波动,直观感知性能热点。
  • 与传统条形图分析器相比,该可视化提供了更优的组件关系上下文感知,后者会掩盖结构上下文。
  • 该方法在GUI密集型应用中展现出实际价值,实时反馈在用户交互过程中揭示了静态分析难以捕捉的性能异常。
  • 该方法在大规模代码库中具有可扩展潜力,但多线程环境下的视觉杂乱和性能开销仍需进一步优化。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。