weave
Programming-Language-Benchmark
weave | Programming-Language-Benchmark | |
---|---|---|
7 | 5 | |
524 | - | |
- | - | |
3.0 | - | |
5 months ago | - | |
Nim | ||
GNU General Public License v3.0 or later | - |
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.
weave
- The GIL can now be disabled in Python's main branch
-
Maybe Everything Is a Coroutine
GPU drivers provide an event system:
- Cuda: https://github.com/mratsim/weave/issues/133
-
Benchmarking 20 programming languages on N-queens and matrix multiplication
```
Note: the Theoretical peak limit is hardcoded and used my previous machine i9-9980XE.
It maybe that your BLAS library is not named libopenblas.so, you can change that here: https://github.com/mratsim/laser/blob/master/benchmarks/thir...
Implementation is in this folder: https://github.com/mratsim/laser/tree/master/laser/primitive...
in particular, tiling, cache and register optimization: https://github.com/mratsim/laser/blob/master/laser/primitive...
AVX512 code generator: https://github.com/mratsim/laser/blob/master/laser/primitive...
And generic Scalar/SSE/AVX/AVX2/AVX512 microkernel generator (this is Nim macros to generate code at compile-time): https://github.com/mratsim/laser/blob/master/laser/primitive...
I'll come back later with details on how to use my custom HPC threadpool Weave instead of OpenMP (https://github.com/mratsim/weave/tree/master/benchmarks/matm...)
-
Nim vs Rust Benchmarks
In my benchmarks, Nim is faster than Rust:
- multithreading runtime (i.e Rayon vs Weave https://github.com/mratsim/weave)
- Cryptography: https://hackmd.io/@gnark/eccbench#Pairing
- Scientific computing / matrix multiplication: https://github.com/bluss/matrixmultiply/issues/34#issuecomme...
There is no inherent reason why a Nim program would be slower than Rust.
-
Aren't green threads just better than async/await?
If you're interested into diving into this I have reviewed solutions to cactus stacks / split stacks here https://github.com/mratsim/weave/blob/master/weave/memory/multithreaded_memory_management.md
-
Nim 2.0 – Thoughts
[4] https://github.com/mratsim/weave
Programming-Language-Benchmark
- Rust vs Zig Benchmarks
-
Ask HN: What are some of the most elegant codebases in your favorite language?
I found Zig implementation of json parsing is interesting. The code is free from hidden control flow !.
https://github.com/hanabi1224/Programming-Language-Benchmark...
-
Nim vs Rust Benchmarks
It appears helloworld is the only test with any repeats, and it only has 5 repeats. https://github.com/hanabi1224/Programming-Language-Benchmark...
Here's the measurement code, it appears to be significantly more complicated than a simple fork/exec/wait loop but that could just be all the C# getting in the way: https://github.com/hanabi1224/Programming-Language-Benchmark... Nevertheless you are probably right that the bulk of this 1.8ms is in the executable under test, and it truly is just bloat. Running `hyperfine ./empty-main-function` from rustc on my Mac gives 0.8ms.
-
Which programming language or compiler is faster
Is faster... on code that has been optimized to hell and back 5 times over and no longer resembles anything like normal code written in the language.
Seriously, this is the code for the top program. I'm reasonably sure 99% of C++ programmers could not decipher it without spending significant amounts of time on google: https://github.com/hanabi1224/Programming-Language-Benchmark...
I appreciate that fair benchmarks across languages are a hard problem, but this is not a good solution to it. Any reference to this data as a comparison between "programming languages and compilers" needs to come with a giant disclaimer that it's comparing them at something you almost certainly don't use them for, and is very far from their main use case.
I also appreciate that this is a repetitive comment the likes of which always come up when this benchmark is mentioned... but I really don't see another way to avoid people misinterpreting it. Very few people are going to spontaneously click through to the code.
What are some alternatives?
eioio - Effects-based direct-style IO for multicore OCaml
Programming-Language-Benchmarks - Yet another implementation of computer language benchmarks game
httpbeast - A highly performant, multi-threaded HTTP 1.1 server written in Nim.
rosettaboy - A gameboy emulator in several different languages
matrixmultiply - General matrix multiplication of f32 and f64 matrices in Rust. Supports matrices with general strides.
awesome-python-typing - Collection of awesome Python types, stubs, plugins, and tools to work with them.
Edith - Electronic Design in Swithft
ocaml-multicore - Multicore OCaml
cosmopolitan - build-once run-anywhere c library
desktop - Focus on what matters instead of fighting with Git.