Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages 2017
DOI: 10.1145/3009837.3009880
|View full text |Cite
|
Sign up to set email alerts
|

Stream fusion, to completeness

Abstract: Stream processing is mainstream (again): Widely-used stream libraries are now available for virtually all modern OO and functional languages, from Java to C# to Scala to OCaml to Haskell. Yet expressivity and performance are still lacking. For instance, the popular, well-optimized Java 8 streams do not support the zip operator and are still an order of magnitude slower than hand-written loops.We present the first approach that represents the full generality of stream processing and eliminates overheads, via th… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
18
0

Year Published

2017
2017
2024
2024

Publication Types

Select...
4
4
2

Relationship

1
9

Authors

Journals

citations
Cited by 37 publications
(18 citation statements)
references
References 35 publications
0
18
0
Order By: Relevance
“…The aforementioned syntactic mondalities are introduced to denote where the evaluation needs to be deferred and we already cross the boundary of semantics-preserving code. At this point, we can navigate and guide freely the process of generating code from a quoted domain-speci c language as shown in past work [6,10,13]. The macro system that comes in Scala 3, described in 5.4 essentially gains inspiration from these technologies and completes what we present in this work.…”
Section: Related Workmentioning
confidence: 79%
“…The aforementioned syntactic mondalities are introduced to denote where the evaluation needs to be deferred and we already cross the boundary of semantics-preserving code. At this point, we can navigate and guide freely the process of generating code from a quoted domain-speci c language as shown in past work [6,10,13]. The macro system that comes in Scala 3, described in 5.4 essentially gains inspiration from these technologies and completes what we present in this work.…”
Section: Related Workmentioning
confidence: 79%
“…Combining these two elements provides a powerful mechanism to manipulate Java collections. However, as reported in [11], expressivity and performance are still lacking. In fact, well-optimized Java 8 streams do not support important operators, like for example the zip operator, and are still an order of magnitude slower than hand-written loops [11].…”
Section: Introductionmentioning
confidence: 94%
“…Ofenbeck et al [2017] and Amin and Rompf [2018] discussed staging for generic programming as well as stage polymorphism in LMS. Multi-stage programming has been widely used to improve the performance in many other domains, such as optimizing compilers or domain-specific languages [Carette et al 2009;Sujeeth et al , 2013, numerical computation [Aktemur et al 2013;Kiselyov 2018], generic programming [Ofenbeck et al 2017;Yallop 2017], data processing [Jonnalagedda et al 2014;Kiselyov et al 2017], query compilation in databases , etc.…”
Section: Related Workmentioning
confidence: 99%