Clash of the Lambdas

Clash of the Lambdas
复制标题

拉姆达人的冲突

DOI:
--
复制
发表时间:
2014
期刊:
ArXiv
影响因子:
--
通讯作者:
Y. Smaragdakis
Y. Smaragdakis
中科院分区:
--
文献类型:
--
作者:
Aggelos Biboudis;Nick Palladinos;Y. Smaragdakis

文献摘要

被引文献

相似文献

Java 8 中引入的 lambda 完善了静态类型主流语言,同时具有面向对象和函数式特性。 Java 中 lambda 的主要动机是促进基于流的声明式 API,从而更容易实现并行性。在本文中,我们评估了流处理中使用的 lambda 抽象对在虚拟机(C#、F#、Java 和 Scala)和运行时平台(Linux 和 Windows 上的 JVM、适用于 Windows 的 .NET CLR、适用于 Linux 的 Mono)上运行的各种高级语言的性能影响。此外,我们还评估了两个优化库(ScalaBlitz 和 LinqOptimizer)可为 C#、F# 和 Scala 提供的性能增益。我们的研究基于小规模吞吐量基准测试,非常谨慎地隔离不同因素,咨询所涉及系统的专家,并确定原因和机会。我们发现 Java 表现出很高的实现成熟度,这是基准测试中的主导因素。同时,优化框架对于常见的查询模式非常有效。
The introduction of lambdas in Java 8 completes the slate of statically-typed, mainstream languages with both object-oriented and functional features. The main motivation for lambdas in Java has been to facilitate stream-based declarative APIs, and, therefore, easier parallelism. In this paper, we evaluate the performance impact of lambda abstraction employed in stream processing, for a variety of high-level languages that run on a virtual machine (C#, F#, Java and Scala) and runtime platforms (JVM on Linux and Windows, .NET CLR for Windows, Mono for Linux). Furthermore, we evaluate the performance gain that two optimizing libraries (ScalaBlitz and LinqOptimizer) can offer for C#, F# and Scala. Our study is based on small-scale throughput-benchmarking, with significant care to isolate different factors, consult experts on the systems involved, and identify causes and opportunities. We find that Java exhibits high implementation maturity, which is a dominant factor in benchmarks. At the same time, optimizing frameworks can be highly effective for common query patterns.