首页> 外文期刊>ACM SIGPLAN Notices: A Monthly Publication of the Special Interest Group on Programming Languages >Instant Pickles: Generating Object-Oriented Pickler Combinators for Fast and Extensible Serialization
【24h】

Instant Pickles: Generating Object-Oriented Pickler Combinators for Fast and Extensible Serialization

机译:Instant Pickles:生成面向对象的Pickler组合器,以实现快速和可扩展的序列化

获取原文
获取原文并翻译 | 示例
           

摘要

As more applications migrate to the cloud, and as “big data” edges into even more production environments, the performance and simplicity of exchanging data between compute nodes/devices is increasing in importance. An issue central to distributed programming, yet often under-considered, is serialization or pickling, i.e., persisting runtime objects by converting them into a binary or text representation. Pickler combinators are a popular approach from functional programming; their composability alleviates some of the tedium of writing pickling code by hand, but they don’t translate well to object-oriented programming due to qualities like open class hierarchies and subtyping polymorphism. Furthermore, both functional pickler combinators and popular, Java-based serialization frameworks tend to be tied to a specific pickle format, leaving programmers with no choice of how their data is persisted. In this paper, we present object-oriented pickler combinators and a framework for generating them at compile-time, called scala/pickling, designed to be the default serialization mechanism of the Scala programming language. The static generation of OO picklers enables significant performance improvements, outperforming Java and Kryo in most of our benchmarks. In addition to high performance and the need for little to no boilerplate, our framework is extensible: using the type class pattern, users can provide both (1) custom, easily interchangeable pickle formats and (2) custom picklers, to override the default behavior of the pickling framework. In benchmarks, we compare scala/pickling with other popular industrial frameworks, and present results on time, memory usage, and size when pickling/ unpickling a number of data types used in real-world, large-scale distributed applications and frameworks.
机译:随着越来越多的应用程序迁移到云中,以及随着“大数据”逐渐进入更多的生产环境,计算节点/设备之间交换数据的性能和简便性变得越来越重要。分布式编程的核心问题是序列化或腌制,即通过将其转换为二进制或文本表示形式来持久化它们,而这些问题经常被忽视。 Pickler组合器是功能编程中的一种流行方法。它们的可组合性减轻了手工编写酸洗代码的乏味,但是由于诸如开放类层次结构和子类型多态性之类的特性,它们不能很好地转换为面向对象的编程。此外,功能性的pickler组合器和流行的基于Java的序列化框架都倾向于绑定到特定的pickle格式,从而使程序员无法选择如何持久保存其数据。在本文中,我们介绍了面向对象的pickler组合器和一个在编译时生成它们的框架,称为scala / pickling,被设计为Scala编程语言的默认序列化机制。静态生成的OO Picklers可以显着提高性能,在我们的大多数基准测试中都优于Java和Kryo​​。除了高性能以及几乎不需要样板外,我们的框架还具有可扩展性:使用类型类模式,用户可以提供(1)自定义,易于互换的泡菜格式和(2)自定义泡菜器,以覆盖默认行为酸洗框架。在基准测试中,我们将scala / pickling与其他流行的工业框架进行了比较,并在对现实世界中的大型分布式应用程序和框架中使用的多种数据类型进行酸洗/松开时,显示了时间,内存使用和大小的结果。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号