An Efficient Composition of Bidirectional Programs by Memoization and Lazy Update

被引:1
|
作者
Tsushima, Kanae [1 ,2 ]
Trong, Bach Nguyen [1 ,2 ]
Gluck, Robert [3 ]
Hu, Zhenjiang [4 ]
机构
[1] Natl Inst Informat, Tokyo, Japan
[2] Grad Univ Adv Studies SOKENDAI, Hayama, Kanagawa, Japan
[3] Univ Copenhagen, Copenhagen, Denmark
[4] Peking Univ, Beijing, Peoples R China
关键词
Bidirectional transformation; Implementation technique; Efficiency; Optimization; Tupling;
D O I
10.1007/978-3-030-59025-3_10
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Bidirectional transformations (BX) are a solution to the view update problem and widely used for synchronizing data. The semantics and correctness of bidirectional programs have been investigated intensively during the past years, but their efficiency and optimization are not yet fully understood. In this paper, as a first step, we study different evaluation methods to optimize their evaluation. We focus on the interpretive evaluation of BX compositions because we found that these compositions are an important cause of redundant computations if the compositions are not right associative. For evaluating BX compositions efficiently, we investigate two memoization methods. The first method, minBiGUL m, uses memoization, which improves the runtime of many BX programs by keeping intermediate results for later reuse. A disadvantage is the familiar tradeoff for keeping and searching values in a table. When inputs become large, the overhead increases and the effectiveness decreases. To deal with large inputs, we introduce the second method, xpg, that uses tupling, lazy update and lazy evaluation as optimizations. Lazy updates delay updates in closures and enables them to use them later. Both evaluation methods were fully implemented for minBiGUL. The experimental results show that our methods are faster than the original method of BiGUL for the non-right associative compositions.
引用
收藏
页码:159 / 178
页数:20
相关论文
共 50 条
  • [21] Scalable Lazy-update Multigrid Preconditioners
    Rasouli, Majid
    Zala, Vidhi
    Kirby, Robert M.
    Sundar, Hari
    2019 IEEE HIGH PERFORMANCE EXTREME COMPUTING CONFERENCE (HPEC), 2019,
  • [22] Debugging lazy functional programs by asking the oracle
    Brassel, Bernd
    Siegel, Holger
    IMPLEMENTATION AND APPLICATION OF FUNCTIONAL LANGUAGES, 2008, 5083 : 183 - 200
  • [23] An extension of lazy abstraction with interpolation for programs with arrays
    Francesco Alberti
    Roberto Bruttomesso
    Silvio Ghilardi
    Silvio Ranise
    Natasha Sharygina
    Formal Methods in System Design, 2014, 45 : 63 - 109
  • [24] A transformation system for lazy functional logic programs
    Alpuente, M
    Falaschi, M
    Moreno, G
    Vidal, G
    FUNCTIONAL AND LOGIC PROGRAMMING, PROCEEDINGS, 1999, 1722 : 147 - 162
  • [25] Fast and efficient commits for Lazy-Lazy hardware transactional memory
    Gaona, Epifanio
    Abelln, Jose L.
    Acacio, Manuel E.
    JOURNAL OF SUPERCOMPUTING, 2015, 71 (12): : 4305 - 4326
  • [26] Compiling lazy functional programs to Java bytecode
    Meehan, Gary
    Mike, Joy
    Software - Practice and Experience, 1999, 29 (07): : 617 - 645
  • [27] Partial evaluation of lazy functional logic programs
    Iranzo, PJ
    AI COMMUNICATIONS, 2003, 16 (02) : 121 - 123
  • [28] An extension of lazy abstraction with interpolation for programs with arrays
    Alberti, Francesco
    Bruttomesso, Roberto
    Ghilardi, Silvio
    Ranise, Silvio
    Sharygina, Natasha
    FORMAL METHODS IN SYSTEM DESIGN, 2014, 45 (01) : 63 - 109
  • [29] A Lazy Desugaring System for Evaluating Programs with Sugars
    Yang, Ziyi
    Xiao, Yushuo
    Guan, Zhichao
    Hu, Zhenjiang
    FUNCTIONAL AND LOGIC PROGRAMMING, FLOPS 2022, 2022, 13215 : 243 - 261
  • [30] Proving Properties of Lazy Functional Programs with SPARKLE
    de Mol, Maarten
    van Eekelen, Marko
    Plasmeijer, Rinus
    CENTRAL EUROPEAN FUNCTIONAL PROGRAMMING SCHOOL, 2008, 5161 : 41 - 86