preciz
Max library - use :array as a matrix
After Matrax I have realized that concurrent mutable matrices of 64 bit integers with atomic updates might be a very special use case.
So while I was in the mindset I have created a similar library, but this time on top of Erlang :array to have a different set of trade-offs. For ex. use any term as an element.
GitHub: GitHub - preciz/max: A matrix library in pure Elixir based on Erlang arrays. · GitHub
Hex.pm: max | Hex
Docs: Max — max v0.1.3
MatrixReloaded by @ondrej-tucek Is the most downloaded pure Elixir matrix library out there on hex.pm so I do a quick general benchmark against that:
Benchmark suite executing with the following configuration:
warmup: 2 s
time: 5 s
memory time: 0 ns
parallel: 1
inputs: none specified
Estimated total run time: 14 s
Name ips average deviation median 99th %
max_get 39.84 K 0.0251 ms ±14.15% 0.0249 ms 0.0294 ms
m_reloaded_get 0.0945 K 10.59 ms ±1.56% 10.55 ms 11.38 ms
Comparison:
max_get 39.84 K
m_reloaded_get 0.0945 K - 421.84x slower +10.56 ms
Name ips average deviation median 99th %
max_set 23.58 K 0.0424 ms ±2.95% 0.0422 ms 0.0451 ms
m_reloaded_update 0.0861 K 11.61 ms ±1.53% 11.56 ms 12.39 ms
Comparison:
max_set 23.58 K
m_reloaded_update 0.0861 K - 273.77x slower +11.57 ms
Name ips average deviation median 99th %
m_reloaded_transpose 498.99 2.00 ms ±4.49% 1.98 ms 2.55 ms
max_transpose 104.20 9.60 ms ±4.23% 9.41 ms 10.79 ms
Comparison:
m_reloaded_transpose 498.99
max_transpose 104.20 - 4.79x slower +7.59 ms
So get/2 and set/3 is much faster while actually transpose/1 is slower. (Similarly to Matrax).
(Please benchmark your use case to decide between libraries. Also check Matrex which uses NIFs.)
Feedback is welcome.
(I’m also looking for employment in case you are hiring please PM me)
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex









