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.
翻译:性能和可变性要求在大多数大型软件应用程序中具有根本作用。为了满足这些要求,在不同的级别和基础设施层中经常使用缓存。 应用级缓存 -- -- 或回忆 -- -- 是一种在应用界限内日益使用的缓存形式,包括存储记忆中的计算结果,以避免重新计算结果。 通常是由开发者手工完成的,他们在代码中找出缓存机会,并编写额外的代码,以管理缓存内容。 查明缓存机会是一项挑战,因为它需要分析工作量和编码地点,以便缓存物品是可行和有益的。 在这项工作中,援助开发者有自动确定可缓存方法的一种方法。虽然对这种方法进行了个别评估,但其有效性没有进行比较。因此,本文件对方法层面现有的两种应用级缓存方法,即APLACAche和MemoizelizIT,使用7种开放源网络应用程序。 我们分析每种方法提出的建议,包括点击率、误存率和过量的代码位置。 对于每一项正确缓存建议,我们从中得出了哪些经验教训,我们从哪些方面得出了哪些经验教训。