HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ExaScience
elprep-bench
C++2020–2020
ExaScience / elprep-bench

elprep-bench

elPrep reimplementations in C++ and Java, only for benchmark comparisons

5Distinct people
5Mentions
0Explicit recommenders
10GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

elPrep reimplementations in C++ and Java, only for benchmark comparisons

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day5 dated mentions

Observed mentions: 2020-04-23 17:00:15 UTC to 2020-05-05 08:07:09 UTC.

012342020-04-23 00:00:00 UTC to 2020-04-24 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 commentsApr 232020-04-24 00:00:00 UTC to 2020-04-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-04-25 00:00:00 UTC to 2020-04-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-04-26 00:00:00 UTC to 2020-04-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-04-27 00:00:00 UTC to 2020-04-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-04-28 00:00:00 UTC to 2020-04-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-04-29 00:00:00 UTC to 2020-04-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsApr 292020-04-30 00:00:00 UTC to 2020-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-05-01 00:00:00 UTC to 2020-05-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-05-02 00:00:00 UTC to 2020-05-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-05-03 00:00:00 UTC to 2020-05-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-05-04 00:00:00 UTC to 2020-05-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-05-05 00:00:00 UTC to 2020-05-06 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMay 5

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Apr 232020-04-23 00:00:00 UTC2020-04-24 00:00:00 UTC404
Apr 242020-04-24 00:00:00 UTC2020-04-25 00:00:00 UTC000
Apr 252020-04-25 00:00:00 UTC2020-04-26 00:00:00 UTC000
Apr 262020-04-26 00:00:00 UTC2020-04-27 00:00:00 UTC000
Apr 272020-04-27 00:00:00 UTC2020-04-28 00:00:00 UTC000
Apr 282020-04-28 00:00:00 UTC2020-04-29 00:00:00 UTC000
Apr 292020-04-29 00:00:00 UTC2020-04-30 00:00:00 UTC000
Apr 302020-04-30 00:00:00 UTC2020-05-01 00:00:00 UTC000
May 12020-05-01 00:00:00 UTC2020-05-02 00:00:00 UTC000
May 22020-05-02 00:00:00 UTC2020-05-03 00:00:00 UTC000
May 32020-05-03 00:00:00 UTC2020-05-04 00:00:00 UTC000
May 42020-05-04 00:00:00 UTC2020-05-05 00:00:00 UTC000
May 52020-05-05 00:00:00 UTC2020-05-06 00:00:00 UTC101

What Hacker News says

5 sources
After quickly glancing the code, I concluded that they wrote C++ like there is no static type. It seems they faithfully ported the very dynamic nature of their existing code to C++ without thinking. Like what is this? https://github.com/ExaScience/elprep-bench/blob/master/cpp/f... auto alns = any_cast<shared_ptr<deque<shared_ptr<sam_alignment>>>>(data); So the data is sam_alignment type inside shared_ptr inside deque inside another share_ptr inside god forbid any? Why did they do that? What kind of abomination is this? Also from the context, it is the only possible type. they use: try { any_cast<abomination_type>(data) ; } catch ( bad_any_cast ) { throw runtime_error(...) ; } If you're so sure an object of any only hold exactly one type and everything else is unexpected error, you shouldn't use any at all! They really like std::de
Read the rest
que<T> and use it everywhere even though the sizeof(T) is like a few dozen bytes at best so they should rather use std::vector. The data structure of deque is a list of array. while it can amortize the continious adding of the elements to front or back, since the element size is very small, they should rather use vector. Speaking of data structure, they also use std::unordered_map<int, any>. the unordered_map is very slow(it's a node based hash map, not suitable for the modern hardware) and the sizeof(int) + sizeof(any) is like 20 bytes(sizeof(int) + two pointers) so they got no benefit of using node based data structure here. They should rather use sorted vector and binary search it. My conclusion, it's slow because they wrote C++ like a dynamic typed language and they choose the wrong data structures.
In Comparison of C++17, Go, and Java for a next-generation sequencing tool
I had a quick look at the C++ source code provided at https://github.com/ExaScience/elprep-bench/tree/master/cpp. As suspected, everything is dynamically allocated and no memory mapping (see e.g. http://man7.org/linux/man-pages/man2/mmap.2.html) is used. No wonder this is slow and eats a lot of memory. At the moment I have no information about why this design was chosen, if there is a justification for it, or if the developers only knew this option. Maybe I can find some hints in the paper. From what I've seen up to now it can be savely assumed that with optimal use of data structures and system functions the C++ results are at least one order of magnitude better.
In Comparison of C++17, Go, and Java for a next-generation sequencing tool

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.