BMC BioinformaticsBioinformaticsPeer-reviewed journal article
A comparison of three programming languages for a full-fledged next-generation sequencing tool
Abstract
BackgroundelPrep is an established multi-threaded framework for preparing SAM and BAM files in sequencing pipelines. To achieve good performance, its software architecture makes only a single pass through a SAM/BAM file for multiple preparation steps, and keeps sequencing data as much as possible in main memory. Similar to other SAM/BAM tools, management of heap memory is a complex task in elPrep, and it became a serious productivity bottleneck in its original implementation language during recent further development of elPrep. We therefore investigated three alternative programming languages: Go and Java using a concurrent, parallel garbage collector on the one hand, and C++17 using reference counting on the other hand for handling large amounts of heap objects. We reimplemented elPrep in all three languages and benchmarked their runtime performance and memory use. ResultsThe Go implementation performs best, yielding the best balance between runtime performance and memory use. While the Java benchmarks report a somewhat faster runtime than the Go benchmarks, the memory use of the Java runs is significantly higher. The C++17 benchmarks run significantly slower than both Go and Java, while using somewhat more memory than the Go runs. Our analysis shows that concurrent, parallel garbage collection is better at managing a large heap of objects than reference counting in our case. ConclusionsBased on our benchmark results, we selected Go as our new implementation language for elPrep, and recommend considering Go as a good candidate for developing other bioinformatics tools for processing SAM/BAM data as well.
- Citations
- 24
- FWCI
- 1.24
- Field percentile
- top 22%
Reproducibility ledger
Nobody has reported trying to reproduce this paper yet. Did you replicate an experiment or run the code? Your report saves the next lab a week.
Sign in to file a reproducibility report.
Related papers
- bíogo: a simple high-performance bioinformatics toolkit for the Go language
R. Daniel Kortschak, David L. Adelson·bioRxiv·Mar 27, 2015
- quickBAM: a parallelized BAM file access API for high throughput sequence analysis informatics
T. Anders Pitman, Xiaomeng Huang, … Yi Qiao·bioRxiv·Oct 5, 2021
- elPrep: A multithreaded framework for sequence analysis
Charlotte Herzeel, Pascal Costanza, … Wilfried Verachtert·PLoS ONEPeer-reviewed·Feb 13, 2019
- ArrowSAM: In-Memory Genomics Data Processing Using Apache Arrow
Tanveer Ahmad, Nauman Ahmed, … Zaid Al-Ars·bioRxiv·Apr 6, 2020
- SamQL: A Structured Query Language and filtering tool for the SAM/BAM file format
Christopher T. Lee, Manolis Maragkakis·BMC BioinformaticsPeer-reviewed·Oct 2, 2021
- Nextflow vs. plain Bash: Different Approaches to the Parallelisation of SNP Calling from the Whole Genome Sequence Data
Marek Sztuka, Krzysztof Kotlarz, … Joanna Szyda·NAR Genomics and BioinformaticsPeer-reviewed·Apr 4, 2024