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

Pascal Costanza, Charlotte Herzeel, W. Verachtert
{"title":"Comparing Ease of Programming in C++, Go, and Java for Implementing a Next-Generation Sequencing Tool","authors":"Pascal Costanza, Charlotte Herzeel, W. Verachtert","doi":"10.1177/1176934319869015","DOIUrl":null,"url":null,"abstract":"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.","PeriodicalId":136690,"journal":{"name":"Evolutionary Bioinformatics Online","volume":"15 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2019-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"6","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Evolutionary Bioinformatics Online","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1177/1176934319869015","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 6

Abstract

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.
比较c++、Go和Java实现下一代测序工具的编程难易程度
elPrep是一个可扩展的多线程软件框架,用于在下一代测序管道中有效地处理序列比对/地图(SAM)/二进制比对/地图(BAM)文件。与其他SAM/BAM工具类似,elPrep中的一个关键挑战是内存管理,因为此类程序需要操作大量数据。因此,我们研究了3种支持辅助或自动内存管理来实现elPrep的编程语言,即c++、Go和Java。我们在所有3种编程语言中实现了elPrep的一个重要子集,并通过对它们的运行时性能和内存使用进行基准测试来比较它们,以确定计算性能方面的最佳语言。在上一篇文章中,基于这些结果,我们解释了为什么最终选择Go作为我们的实现语言。在本文中,我们将从编程语言结构和标准库支持的角度讨论在每种语言中实现最佳性能的困难。虽然基准很容易客观地度量和评估,但对于评估编程的容易程度来说,这一点就不那么明显了。然而,因为我们期望elPrep被定期修改和扩展,所以这是一个同样重要的方面。我们举例说明了这三种语言面临的挑战,并给出了我们的观点,为什么我们认为Go也是一个合理的选择。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信