论文标题

对方法级别的应用级缓存建议的比较研究

A Comparative Study of Application-level Caching Recommendations at the Method Level

论文作者

Meloca, Romulo, Nunes, Ingrid

论文摘要

性能和可伸缩性要求在大多数大型软件应用中具有基本作用。为了满足此类要求,通常在各个级别和基础设施层中使用缓存。应用程序级的缓存(或回忆)是在应用程序边界内日益使用的缓存形式,它包括存储内存中的计算结果,以避免重新计算它们。这通常是由开发人员手动完成的,他们识别代码中的缓存机会并编写其他代码来管理高速缓存内容。识别缓存机会的任务是一个挑战,因为它需要对工作负载和代码位置进行分析,在该位置可行且对缓存对象有益。为了帮助开发人员执行此任务,有一些方法可以自动识别可缓存的方法。尽管对这种方法进行了单独评估,但尚未比较它们的有效性。因此,我们在本文中介绍了经验评估,以比较使用七个开源Web应用程序在方法级别(即Aplcache和Memoizeit)上两种现有的应用程序级缓存方法提出的方法建议。我们通过有效的缓存建议分析了每种方法的建议以及命中,错过和吞吐量。我们的结果表明,两种方法的有效性在很大程度上取决于特定的应用,无效建议的存在以及其他配置,例如live的时间。通过检查获得的结果,我们观察到每种方法的建议失败和成功的情况下,这使我们能够得知一组七个教训,这些教训为将来的方法提供了指导,以支持开发人员采用这种类型的缓存。

Performance and scalability requirements have a fundamental role in most large-scale software applications. To satisfy such requirements, caching is often used at various levels and infrastructure layers. Application-level caching -- or memoization -- is an increasingly used form of caching within the application boundaries, which consists of storing the results of computations in memory to avoid re-computing them. This is typically manually done by developers, who identify caching opportunities in the code and write additional code to manage the cache content. The task of identifying caching opportunities is a challenge because it requires the analysis of workloads and code locations where it is feasible and beneficial to cache objects. To aid developers in this task, there are approaches that automatically identify cacheable methods. Although such approaches have been individually evaluated, their effectiveness has not been compared. We thus in this paper present an empirical evaluation to compare the method recommendations made by the two existing application-level caching approaches at the method level, namely APLCache and MemoizeIt, using seven open-source web applications. We analyse the recommendations made by each approach as well as the hits, misses and throughput achieved with their valid caching recommendations. Our results show that the effectiveness of both approaches largely depends on the specific application, the presence of invalid recommendations and additional configurations, such as the time-to-live. By inspecting the obtained results, we observed in which cases the recommendations of each approach fail and succeed, which allowed us to derive a set of seven lessons learned that give directions for future approaches to support developers in the adoption of this type of caching.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源