bwa-mem2 VS Klib

Compare bwa-mem2 vs Klib and see what are their differences.

bwa-mem2

The next version of bwa-mem (by 7PintsOfCherryGarcia)
Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
bwa-mem2 Klib
1 17
0 3,595
- -
2.3 0.0
9 months ago 6 months ago
C++ C
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

bwa-mem2

Posts with mentions or reviews of bwa-mem2. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-21.
  • sqzlib - kseq compatible DNA fastA/Q encoding and compression library
    5 projects | reddit.com/r/bioinformatics | 21 Nov 2021
    Most importantly, sqzlib is fully compatible with klib/kseq.h one of the highest performance fastA/Q parsers. This means that any application that uses kseq.h for fastA/Q parsing, can be easily modified to use sqzlib instead. You can find patched versions of seqstats, minimap2, and bwa-mem2 in my github, or you can patch them yourself with the included patches.

Klib

Posts with mentions or reviews of Klib. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-07-31.
  • The New Ghostscript PDF Interpreter
    4 projects | news.ycombinator.com | 31 Jul 2022
    Code reuse is achievable by (mis)using the preprocessor system. It is possible to build a somewhat usable API, even for intrusive data structures. (eg. the linux kernel and klib[1])

    I do agree that generics are required for modern programming, but for some, the cost of complexity of modern languages (compared to C) and the importance of compatibility seem to outweigh the benefits.

    [1]: http://attractivechaos.github.io/klib

  • C LIBRARY
    2 projects | reddit.com/r/C_Programming | 10 Jul 2022
  • boost::unordered map is a new king of data structures
    10 projects | reddit.com/r/cpp | 30 Jun 2022
    Unordered hash map shootout CMAP = https://github.com/tylov/STC KMAP = https://github.com/attractivechaos/klib PMAP = https://github.com/greg7mdp/parallel-hashmap FMAP = https://github.com/skarupke/flat_hash_map RMAP = https://github.com/martinus/robin-hood-hashing HMAP = https://github.com/Tessil/hopscotch-map TMAP = https://github.com/Tessil/robin-map UMAP = std::unordered_map Usage: shootout [n-million=40 key-bits=25] Random keys are in range [0, 2^25). Seed = 1656617916: T1: Insert/update random keys: KMAP: time: 1.949, size: 15064129, buckets: 33554432, sum: 165525449561381 CMAP: time: 1.649, size: 15064129, buckets: 22145833, sum: 165525449561381 PMAP: time: 2.434, size: 15064129, buckets: 33554431, sum: 165525449561381 FMAP: time: 2.112, size: 15064129, buckets: 33554432, sum: 165525449561381 RMAP: time: 1.708, size: 15064129, buckets: 33554431, sum: 165525449561381 HMAP: time: 2.054, size: 15064129, buckets: 33554432, sum: 165525449561381 TMAP: time: 1.645, size: 15064129, buckets: 33554432, sum: 165525449561381 UMAP: time: 6.313, size: 15064129, buckets: 31160981, sum: 165525449561381 T2: Insert sequential keys, then remove them in same order: KMAP: time: 1.173, size: 0, buckets: 33554432, erased 20000000 CMAP: time: 1.651, size: 0, buckets: 33218751, erased 20000000 PMAP: time: 3.840, size: 0, buckets: 33554431, erased 20000000 FMAP: time: 1.722, size: 0, buckets: 33554432, erased 20000000 RMAP: time: 2.359, size: 0, buckets: 33554431, erased 20000000 HMAP: time: 0.849, size: 0, buckets: 33554432, erased 20000000 TMAP: time: 0.660, size: 0, buckets: 33554432, erased 20000000 UMAP: time: 2.138, size: 0, buckets: 31160981, erased 20000000 T3: Remove random keys: KMAP: time: 1.973, size: 0, buckets: 33554432, erased 23367671 CMAP: time: 2.020, size: 0, buckets: 33218751, erased 23367671 PMAP: time: 2.940, size: 0, buckets: 33554431, erased 23367671 FMAP: time: 1.147, size: 0, buckets: 33554432, erased 23367671 RMAP: time: 1.941, size: 0, buckets: 33554431, erased 23367671 HMAP: time: 1.135, size: 0, buckets: 33554432, erased 23367671 TMAP: time: 1.064, size: 0, buckets: 33554432, erased 23367671 UMAP: time: 5.632, size: 0, buckets: 31160981, erased 23367671 T4: Iterate random keys: KMAP: time: 0.748, size: 23367671, buckets: 33554432, repeats: 8, sum: 4465059465719680 CMAP: time: 0.627, size: 23367671, buckets: 33218751, repeats: 8, sum: 4465059465719680 PMAP: time: 0.680, size: 23367671, buckets: 33554431, repeats: 8, sum: 4465059465719680 FMAP: time: 0.735, size: 23367671, buckets: 33554432, repeats: 8, sum: 4465059465719680 RMAP: time: 0.464, size: 23367671, buckets: 33554431, repeats: 8, sum: 4465059465719680 HMAP: time: 0.719, size: 23367671, buckets: 33554432, repeats: 8, sum: 4465059465719680 TMAP: time: 0.662, size: 23367671, buckets: 33554432, repeats: 8, sum: 4465059465719680 UMAP: time: 6.168, size: 23367671, buckets: 31160981, repeats: 8, sum: 4465059465719680 T5: Lookup random keys: KMAP: time: 0.943, size: 23367671, buckets: 33554432, lookups: 34235332, found: 29040438 CMAP: time: 0.863, size: 23367671, buckets: 33218751, lookups: 34235332, found: 29040438 PMAP: time: 1.635, size: 23367671, buckets: 33554431, lookups: 34235332, found: 29040438 FMAP: time: 0.969, size: 23367671, buckets: 33554432, lookups: 34235332, found: 29040438 RMAP: time: 1.705, size: 23367671, buckets: 33554431, lookups: 34235332, found: 29040438 HMAP: time: 0.712, size: 23367671, buckets: 33554432, lookups: 34235332, found: 29040438 TMAP: time: 0.584, size: 23367671, buckets: 33554432, lookups: 34235332, found: 29040438 UMAP: time: 1.974, size: 23367671, buckets: 31160981, lookups: 34235332, found: 29040438
  • C++ containers but in C
    8 projects | reddit.com/r/C_Programming | 8 Mar 2022
  • Im looking for a good hashtable fonction to use
    2 projects | reddit.com/r/C_Programming | 17 Dec 2021
    If you want a generic, extremely high performance implementation. I really recommend khash: https://github.com/attractivechaos/klib/blob/master/khashl.h
  • What if Linus Torvalds used C++ instead of C
    2 projects | reddit.com/r/linuxmasterrace | 28 Nov 2021
  • sqzlib - kseq compatible DNA fastA/Q encoding and compression library
    5 projects | reddit.com/r/bioinformatics | 21 Nov 2021
    Most importantly, sqzlib is fully compatible with klib/kseq.h one of the highest performance fastA/Q parsers. This means that any application that uses kseq.h for fastA/Q parsing, can be easily modified to use sqzlib instead. You can find patched versions of seqstats, minimap2, and bwa-mem2 in my github, or you can patch them yourself with the included patches.
  • "Implementing Hash Tables in C" (an article I've drafter a few years ago, but never published it until... now)
    2 projects | reddit.com/r/C_Programming | 15 Oct 2021
    I don;t know if you are aware of khash? It's a very nifty hash table implementation. It is one of the fastest hash table implementations out there. Heavily used in bioinformatics. You said in your post that you are a macro guy, well, you are in for a treat with this library.
  • Metaprogramming custom control structures in C
    3 projects | news.ycombinator.com | 10 Jul 2021
  • I still like C and strongly dislike C++
    1 project | news.ycombinator.com | 26 May 2021

What are some alternatives?

When comparing bwa-mem2 and Klib you can also consider the following projects:

minimap2 - A versatile pairwise aligner for genomic and spliced nucleotide sequences

ZLib - A massively spiffy yet delicately unobtrusive compression library.

ZXing - ZXing ("Zebra Crossing") barcode scanning library for Java, Android

Better Enums - C++ compile-time enum to string, iteration, in a single header file

Cppcheck - static analysis of C/C++ code

Better String - The Better String Library

HTTP Parser - http request/response parser for c

Mach7 - Functional programming style pattern-matching library for C++

STC - A modern, user friendly, generic, type-safe and fast C99 container library: String, Vector, Sorted and Unordered Map and Set, Deque, Forward List, Smart Pointers, Bitset and Random numbers.

C++ Format - A modern formatting library

ctl - My variant of the C Template Library

megahash - A super-fast C++ hash table with Node.js wrapper, tested up to 1 billion keys.