nbdkit
memset_benchmark
Our great sponsors
nbdkit | memset_benchmark | |
---|---|---|
17 | 11 | |
- | 296 | |
- | - | |
- | 1.8 | |
- | over 2 years ago | |
Assembly | ||
- | - |
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.
nbdkit
-
Why AWS Supports Valkey
This is correct, but doesn't quite explain why. It's because when you accept contributions from a variety of authors, without using a CLA, then your code base ends up with a patchwork of copyright, making relicensing practically impossible as you have to get buy-in from every author or else determine that author's contributions and remove/rewrite them.
GPL/LGPL are excellent licenses, but this patchwork of copyright can apply for any license you use. For a small project we wrote which was under BSD, we recently had to make a small (non-functional) change to the license, and we got buy-in from all the authors to do this which took quite a long time: https://gitlab.com/nbdkit/nbdkit/-/commit/952ffe0fc7685ea775...
-
Disk write buffering and its interactions with write flushes
Direct IO is very inflexible. A better way is this (recommended by Linus):
https://lkml.iu.edu/hypermail/linux/kernel/1005.2/01845.html
I implemented something along the same lines but a bit less spicy here:
https://gitlab.com/nbdkit/nbdkit/-/commit/aa5a2183a6d16afd91...
That second link is wrong, should be: https://gitlab.com/nbdkit/nbdkit/-/commit/a956e2e75d6c88eeef...
-
The C++20 Naughty and Nice List for Game Devs
I think an exception might be made for a plain "C-like" struct that doesn't initialize members or contain anything except basic types. In the specific example[0] the code is actually surrounded by extern "C" { ... } so I suppose that the compiler "knows" this is a plain C struct?
[0] https://gitlab.com/nbdkit/nbdkit/-/blob/cd761c9bf770b23f678f...
- Static Analysis Tools for C
- jq 1.7 Released
-
The OpenTF Manifesto
We relicensed[1] a project which had 10 contributors, and we got every single one of them to do an Acked-by (by email) which took some weeks. That was the advice from our lawyers. Can't imagine the impossible hassle of doing the same for something like Linux.
[1] https://gitlab.com/nbdkit/nbdkit/-/commit/952ffe0fc7685ea775...
- TIL: You Can Stop Updating Copyright Attribution Years (2021)
- Starting October 19, storage limit will be enforced on all Gitlab Free accounts
-
The C/C++ preprocessor iceberg with explanations
We use this (trick taken from stackoverflow) to make __COUNTER__ usefully provide unique names:
https://gitlab.com/nbdkit/nbdkit/-/blob/master/common/includ...
Example use:
https://gitlab.com/nbdkit/nbdkit/-/blob/master/common/includ...
I don't know what __EXP_COUNTER__ would add.
memset_benchmark
- Optimising Memset and Memcpy
- Fast Memset and Memcpy implementations
-
A faster implementation of memset in 100 LOC
I was impressed by the notion until I saw the code...
Yeah, sorry, but I call bullshit. This guy claims that he consistently beats performance (across all string lengths) by a crazy fraction with a memset implementation that's a few pages of generic C code. For comparison, one glibc memset for reasonably modern x86_64 machines looks like this.
-
A 100LOC C impl of memset, that is faster than glibc's
Probably poorly. It is a violation to cast an unaligned pointer to an aligned type. And the code looks like it does just that right here: https://github.com/nadavrot/memset_benchmark/blob/main/src/l...
This is undefined behavior under C99 §6.3.2.3 Paragraph 7.
What are some alternatives?
safeclib - safec libc extension with all C11 Annex K functions
dattobd - kernel module for taking block-level snapshots and incremental backups of Linux block devices
qemu
libnbd
gcc
transgui - 🧲 A feature rich cross platform Transmission BitTorrent client. Faster and has more functionality than the built-in web GUI.
fancy-memset - small, fast memset based on microsoft's design
jackson-jq - jq for Jackson Java JSON Processor
git-filter-repo - Quickly rewrite git repository history (filter-branch replacement)
cppiceberg - The C++ Iceberg