Name: | Description: | Size: | Format: | |
---|---|---|---|---|
638.73 KB | Adobe PDF |
Advisor(s)
Abstract(s)
Customizing streams pipelines with new user-defined operations is a well-known pattern regarding streams processing. However, programming languages face two challenges when considering streams extensibility: 1) provide a compact and readable way to express new operations, and 2) keep streams’ laziness behavior. From here, we may find a consensus around the adoption of the generator operator, i.e. yield, as a means to fulfil both requirements, since most state-of-the-art programming languages provide this feature. Yet, what is the performance overhead of interleaving a yield-based operation in streams processing? In this work we present a benchmark based on realistic use cases of two different web APIs, namely: Last.fm and world weather on line, where custom yield-based operations may degrade the streams performance in twofold. We also propose a purely functional and minimalistic design, named tinyield, that can be easily adopted in any programming language and provides a concise way of chaining extension operations fluently, with low overhead in the eval uated benchmarks. The tinyield proposal was deployed in three different libraries, namely for Java (jayield), JavaScript (tinyield4ts) and .Net (tinyield4net).
Description
Este trabalho foi financiado pelo Concurso Anual para Projetos de Investigação, Desenvolvimento, Inovação e Criação Artística (IDI&CA) 2020 do Instituto Politécnico de Lisboa. Código de referência IPL/2020/WebFluid/ISEL
Keywords
Yield Generators Streams Lazy sequences Iterators Extensions
Citation
POEIRA, Diogo; CARVALHO, Fernando Miguel – Deconstructing yield operator to enhance streams processing. In Proceedings of the 16th International Conference on Software Technologies (ICSOFT 2021). SCITEPRESS, 2022. ISBN: 978-989-758-523-4. Pp. 143-150.
Publisher
SCITEPRESS