一句话:首个对45个开源Unity VR项目中183次性能优化的实证研究,分类优化并分析其生命周期影响与效果。
虚拟现实应用需双眼实时渲染,计算开销高且可穿戴设备资源受限,性能优化至关重要,但其优化实践与传统软件可能不同。本文首次对45个开源 Unity VR 软件项目中的183次真实性能优化进行实证研究。作者人工将优化划分为11类,并结合静态分析识别其影响的 VR 应用生命周期阶段,分析优化的复杂度、设计与行为效应,以及大型组织项目与个人项目之间的差异。结果发现,图形简化(24.0%)、渲染优化(16.9%)、语言/API优化(15.3%)、堆内存规避(14.8%)和值缓存(12.0%)最常见;游戏逻辑更新(30.4%)与场景初始化前(20.0%)是最常受影响阶段;45.9%的优化带来行为或设计影响,39.3%为系统性修改;组织项目与个人项目的优化类别分布差异显著。
Virtual Reality (VR) is an emerging technique that provides immersive experience for users. Due to the high computation cost of rendering real-time animation twice (for both eyes) and the resource limitation of wearable devices, VR applications often face performance bottlenecks and performanceoptimization plays an important role in VR software develop-ment. Performance optimizations of VR applications can be very different from those in traditional software as VR involves more elements such as graphics rendering and real-time animation. In this paper, we present the first empirical study on 183 real-world performance optimizations from 45 VR software projects. In particular, we manually categorized the optimizations in to 11 categories, and applied static analysis to identify how they affect different life-cycle phases of VR applications. Furthermore, we studied the complexity and design / behavior effects of performance optimizations, and how optimizations are different between large organizational software projects and smaller personal software projects. Our major findings include: (1) graphics simplification (24.0%), rendering optimization (16.9%), language / API optimization (15.3%), heap avoidance (14.8%), and valuecaching (12.0%) are the most common categories of performance optimization in VR applications; (2) game logic updates (30.4%) and before-scene initialization (20.0%) are the most common life-cycle phases affected by performance issues; (3) 45.9% of the optimizations have behavior and design effects and 39.3% of the optimizations are systematic changes; (4) the distributionsof optimization classes are very different between organizational VR projects and personal VR projects.
@inproceedings{NusratHZW21,
title = {How Developers Optimize Virtual Reality Applications: A Study of Optimization Commits in Open Source Unity Projects},
author = {Fariha Nusrat and Foyzul Hassan and Hao Zhong and Xiaoyin Wang},
booktitle = {ICSE},
year = {2021},
doi = {10.1109/icse43902.2021.00052}
}