...
首页> 外文期刊>Automated software engineering >Exploring optimization and caching for efficient collection operations
【24h】

Exploring optimization and caching for efficient collection operations

机译:探索优化和缓存以实现高效的收集操作

获取原文
获取原文并翻译 | 示例
           

摘要

Many large programs operate on collection types. Extensive libraries are available in many programming languages, such as the C++ Standard Template Library, which make programming with collections convenient. Extending programming languages to provide collection queries as first class constructs in the language would not only allow programmers to write queries explicitly in their programs but it would also allow compilers to leverage the wealth of experience available from the database domain to optimize such queries. This paper describes an approach to reduce the run time of programs involving explicit collection queries by performing run time query optimization that is effective for single runs of a program. In addition, it also leverages a cache to store previously computed results. The proposed approach relies on histograms built from the data at run time to estimate the selectivity of joins and predicates in order to construct query plans. Information from earlier executions of the same query during run time is leveraged during the construction of the query plans, even when the data has changed between these executions. An effective cache policy is also determined for caching the results of join (sub) queries. The cache is maintained incrementally, when the underlying collections change, and use of the cache space is optimized by a cache replacement policy. Our approach has been implemented within the Java Query Language (JQL) framework using AspectJ. Our approach demonstrated that its run time query optimization in integration with caching sub query result significantly improves the run time of programs with explicit queries over equivalent programs performing collection operations by iterating over those collections. This paper evaluates our approach using synthetic as well as real world Robocode programs by comparing it to JQL as a benchmark. Experimental results show that our approach performs better than the JQL approach with respect to the program run time.
机译:许多大型程序对集合类型进行操作。可用许多编程语言提供广泛的库,例如C ++标准模板库,它使使用集合进行编程变得方便。扩展编程语言以提供集合查询作为该语言的第一类构造,不仅使程序员可以在其程序中显式编写查询,而且还允许编译器利用数据库领域的丰富经验来优化此类查询。本文介绍了一种通过执行对程序单次运行有效的运行时查询优化来减少涉及显式集合查询的程序运行时间的方法。此外,它还利用缓存来存储先前计算的结果。所提出的方法依赖于在运行时从数据构建的直方图来估计联接和谓词的选择性,以构建查询计划。即使在执行之间更改了数据,在查询计划的构建过程中也会利用来自同一查询在运行时的较早执行的信息。还确定了一种有效的缓存策略,用于缓存联接(子)查询的结果。当基础集合发生更改时,将对缓存进行增量维护,并通过缓存替换策略优化对缓存空间的使用。我们的方法已使用AspectJ在Java查询语言(JQL)框架内实现。我们的方法表明,它的运行时查询优化与缓存子查询结果相集成,显着提高了程序的运行时间,这些显式查询通过迭代对那些执行集合操作的等效程序进行显式查询。本文通过将其与JQL作为基准进行比较,从而评估了我们使用合成的以及实际的Robocode程序的方法。实验结果表明,就程序运行时间而言,我们的方法比JQL方法具有更好的性能。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号