Comparing Ease of Programming in C plus plus , Go, and Java for Implementing a Next-Generation Sequencing Tool

Comparing Ease of Programming in C plus plus , Go, and Java for Implementing a Next-Generation Sequencing Tool
复制标题

DOI:
10.1177/1176934319869015
复制
发表时间:
2019-08-15
影响因子:
2.6
通讯作者:
Verachtert, Wilfried
Verachtert, Wilfried
中科院分区:
生物学4区
文献类型:
--
作者:
Costanza, Pascal;Herzeel, Charlotte;Verachtert, Wilfried

文献摘要

被引文献

相似文献

elPrep是一个可扩展的多线程软件框架,用于在下一代测序管道中有效地处理序列比对/地图(SAM)/二进制比对/地图(BAM)文件。与其他SAM/BAM工具类似,elPrep中的一个关键挑战是内存管理,因为此类程序需要操作大量数据。因此,我们研究了3种支持辅助或自动内存管理来实现elPrep的编程语言,即c++、Go和Java。我们在所有3种编程语言中实现了elPrep的一个重要子集,并通过对它们的运行时性能和内存使用进行基准测试来比较它们,以确定计算性能方面的最佳语言。在上一篇文章中,基于这些结果,我们解释了为什么最终选择Go作为我们的实现语言。在本文中,我们将从编程语言结构和标准库支持的角度讨论在每种语言中实现最佳性能的困难。虽然基准很容易客观地度量和评估,但对于评估编程的容易程度来说,这一点就不那么明显了。然而,因为我们期望elPrep被定期修改和扩展,所以这是一个同样重要的方面。我们举例说明了这三种语言面临的挑战,并给出了我们的观点,为什么我们认为Go也是一个合理的选择。
elPrep is an extensible multithreaded software framework for efficiently processing Sequence Alignment/Map (SAM)/Binary Alignment/Map (BAM) files in next-generation sequencing pipelines. Similar to other SAM/BAM tools, a key challenge in elPrep is memory management, as such programs need to manipulate large amounts of data. We therefore investigated 3 programming languages with support for assisted or automated memory management for implementing elPrep, namely C++, Go, and Java. We implemented a nontrivial subset of elPrep in all 3 programming languages and compared them by benchmarking their runtime performance and memory use to determine the best language in terms of computational performance. In a previous article, we motivated why, based on these results, we eventually selected Go as our implementation language. In this article, we discuss the difficulty of achieving the best performance in each language in terms of programming language constructs and standard library support. While benchmarks are easy to objectively measure and evaluate, this is less obvious for assessing ease of programming. However, because we expect elPrep to be regularly modified and extended, this is an equally important aspect. We illustrate representative examples of challenges in all 3 languages, and give our opinion why we think that Go is a reasonable choice also in this light.