httpaf
retro-httpaf-bench
Our great sponsors
httpaf | retro-httpaf-bench | |
---|---|---|
2 | 6 | |
533 | 21 | |
0.6% | - | |
0.0 | 0.0 | |
4 months ago | about 2 months ago | |
OCaml | Jupyter Notebook | |
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.
httpaf
- Parser Combinators in Haskell
-
The RustyHermit Unikernel: unikernel written in Rust
Thanks for chiming in!
Sadly cohttp is (or was) performing so bad that it is kind of at odds with using it on a unikernel.
This one is quite a bit faster:
retro-httpaf-bench
- Parser Combinators in Haskell
-
Ask HN: Alternatives to Rust Programming Language
I do. The benchmark results itself is here: https://aws1.discourse-cdn.com/standard11/uploads/ocaml/opti.... This comes from the OCaml multicore monthly news, the october 2021 edition: https://discuss.ocaml.org/t/multicore-ocaml-october-2021/882.... The benchmark's repo is here: https://github.com/ocaml-multicore/retro-httpaf-bench. However that image is not the whole story, and there's a bit more info here: https://watch.ocaml.org/videos/watch/74ece0a8-380f-4e2a-bef5.... In that video, the author says that the result vary depending on the load (sometimes Rust Hyper can end up above OCaml httpaf eio), that OCaml currently uses an io-uring backend while Rust doesn't, and that the results are for single core as previous OCaml implementations are single-core themselves.
I do feel that this benchmark is incomplete. I'd like it to see the results while using all of the cores of a machine, and I'd like to see different type of loads. I do think that the results are impressive: performance between Go and Rust is great. I do hope that it stays this way with multicore.
-
Adapting the OCaml Ecosystem for Multicore OCaml
We don't compare against Go pervasively. Benchmarking across languages is hard generally, but here is a result on a specific benchmark comparing several versions of OCaml benchmarks against Go and Rust on a Http server benchmark: https://github.com/ocaml-multicore/retro-httpaf-bench/pull/1....
If there are suggestions to make the Go and Rust versions, please feel free to tell us how in the issue tracker.
-
I don't see a future for Go. It's big within the kubernetes world right now but it will slowly be replaced by Rust.
multicore already faster than Go
-
Functional Programming in OCaml
Multicore is coming along, you can read the latest news here: https://discuss.ocaml.org/t/multicore-ocaml-june-2021/8134
In terms of performance, there is this paper https://kcsrk.info/papers/system_effects_feb_18.pdf where on a single core async OCaml and effect OCaml are close to Go's net/http, and there is also this project https://github.com/ocaml-multicore/retro-httpaf-bench but I haven't see any results from it.
What are some alternatives?
ocaml-cohttp - An OCaml library for HTTP clients and servers using Lwt or Async
assert-combinators - Functional assertion combinators.
dream - Tidy, feature-complete Web framework
codeworld - Educational computer programming environment using Haskell
ocaml-opium-unikernel - Example unikernel using opium + httpaf (using https://github.com/dinosaure/paf-le-chien)
parser - String parser combinators
angstrom - Parser combinators built for speed and memory efficiency
pyparsing - Python library for creating PEG parsers
ocaml-h2 - An HTTP/2 implementation written in pure OCaml
ling - Erlang on Xen
crystal - The Crystal Programming Language