Program | Language | Library | tg2r (s) | Mg2r (Mb) | tr2g (s) | Mr2g (Mb) |
---|---|---|---|---|---|---|
bedcov_c1_cgr.c | C | cgranges.h | 5.2 | 138.4 | 10.7 | 19.1 |
bedcov_cr1_klib.cr | Crystal | klib.cr | 8.8 | 319.6 | 14.8 | 40.7 |
bedcov_nim1_klib.nim | Nim | klib.nim | 16.6 | 248.4 | 26.0 | 34.1 |
bedcov_jl1_klib.jl | Julia | Klib.jl | 25.9 | 428.1 | 63.0 | 257.0 |
bedcov_go1.go | Go | 34.0 | 318.9 | 21.8 | 47.3 | |
bedcov_js1_cgr.js | Javascript | 76.4 | 2219.9 | 80.0 | 316.8 | |
bedcov_lua1_cgr.lua | LuaJIT | 174.1 | 2668.0 | 218.9 | 364.6 |
-
Crystal, Nim and Julia use a long contiguous memory block for loaded intervals on each chromosome. Javascript and LuaJIT instead use a list of separate objects.
-
Bounds check is completely disabled for Nim and partially disabled for Crystal. Bounds check might be partially disabled in Julia, too. Not sure.
-
For "g2r", sorting takes significant time. C uses a radix sort. Other languages rely on their standard libraries.