memset_benchmark
This repository contains high-performance implementations of memset and memcpy in assembly. (by nadavrot)
libnbd
By nbdkit
memset_benchmark | libnbd | |
---|---|---|
11 | 4 | |
296 | - | |
- | - | |
1.8 | - | |
over 2 years ago | - | |
Assembly | ||
- | - |
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.
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.
memset_benchmark
Posts with mentions or reviews of memset_benchmark.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-11-28.
-
Function multi-versioning in GCC 6 (2016)
mem* do not need to be called via ifunc. That is a toolchain decision. See e.g. https://github.com/nadavrot/memset_benchmark for recent data about the cost of PLT indirection for small copies.
- Optimising Memset and Memcpy
- Fast Memset and Memcpy implementations
-
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.
-
A faster implementation of memset in 100 LOC
I was impressed by the notion until I saw the code...
libnbd
Posts with mentions or reviews of libnbd.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-09-06.
- jq 1.7 Released
-
Fuzzing ping(8) and finding a 24 year old bug
Below is the small framework we use to fuzz a network client. It works by creating a Unix socket, forking, then having the client (under test) on one side of the socket and a small loop which reads the input file into the socket on the other side.
https://gitlab.com/nbdkit/libnbd/-/tree/master/fuzzing
-
The fastest way to copy a file
We did a bunch of benchmarking around this when writing nbdcopy (https://gitlab.com/nbdkit/libnbd/-/tree/master/copy) which can copy file to file as well as between local files and NBD servers. There was also the goal to avoid polluting the page cache, which depending on if you're going to use the file content immediately afterwards or not matters.
Anyway long story short, the best thing we found (for Linux) was Linus's own advice linked from here: https://stackoverflow.com/a/3756466
- A 100LOC C impl of memset, that is faster than glibc's
What are some alternatives?
When comparing memset_benchmark and libnbd you can also consider the following projects:
safeclib - safec libc extension with all C11 Annex K functions
nbdkit
gcc
rsl - reserialise: lossy but versatile conversion between data serialisation formats
fancy-memset - small, fast memset based on microsoft's design
jackson-jq - jq for Jackson Java JSON Processor
qemu
llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.