Content area

Abstract

Combining different programs or code fragments is a natural way to build larger programs. This allows programmers to better separate a complex problem into simple parts. Furthermore, by writing programs in a modular way, we increase code reusability

However, these simple parts need to be connected somehow. These connections are done via intermediate structures that communicate results between the different components, harming performance because of the overhead introduced by the allocation and deallocation of multiple structures

Fusion, a very commonly used technique in functional programming, aims to remove the creation of these unnecessary structures, as they don’t take part in the final result

With the introduction of streams and lambda expressions, Java made its way into a more functional programming style. Yet, these mechanisms lack optimization and the adaptation of fusion techniques used by some compilers for functional languages could benefit the performance of Java streams

In this thesis, we study how functional fusion can be adapted to Java Streams.

Alternate abstract:

Combinar diferentes programas ou fragmentos de código é uma forma natural de construir programas maiores. Isto permite aos programadores melhor separar um problema complexo em partes simples. Além disso, ao escrever programas de forma modular, estamos a aumentar a reutilização do código

Contudo, estas partes têm de ser ligadas de alguma maneira. Estas conexões são feitas via estruturas intermédias que comunicam os resultados entre os diferentes componentes, prejudicando a performancecom o overhead introduzido pela alocação e desalocação de várias estruturas

A fusão, uma técnica muito usada em programação funcional, pretende remover a criação destas estruturas desnecessárias, uma vez que não tomam parte no resultado final

Com a introdução de streams e expressões lambda, o Java abriu caminho para um estilo de programação mais funcional. Mesmo assim, estes mecanismos não possuem otimização e a adaptação de técnicas de fusão utilizadas por alguns compiladores de linguagens funcionais poderiam beneficiar a performance das streams do Java.

Nesta dissertação, é estudado como a fusão em programação funcional pode ser adaptada às streams do Java

Details

Title
Java Stream Optimization Through Program Fusion
Author
Ribeiro, Francisco José Torres
Publication year
2018
Publisher
ProQuest Dissertations & Theses
ISBN
9798480632330
Source type
Dissertation or Thesis
Language of publication
English
ProQuest document ID
2587743188
Copyright
Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.