WallysFerreira
I’ve decided to do this year’s advent of code in elixir as my first approach to the language.
It’s been great but now on the second part of day 5 I’m facing a little problem.
When I try to run the code on iex, the process gets killed after a little while. I’ve done a little investigating and apparently the function “:lists.seq_loop/4” is using 1 gigabyte of memory and probably causing the system to shutdown the iex process.
I tried researching about memory management in elixir but only found out about :erlang.garbage_collect/0, and it didn’t make much difference.
If anyone could help with ideas to make the memory usage lower or any other ways to make it run, I’d gladly appreciate it
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app?
Looking for hints regarding:
Addi...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
Hi all, I wanted to ask how the community is dealing with post-release steps.
Today we have Ecto migrations, which make sure that the db...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
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
- #blog-post
- #phoenix_html
- #iex
- #ai
- #graphql
- #genstage
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
hauleth
Show us some code
WallysFerreira
hauleth
Check out the size of the ranges. You are trying to allocate gargantuantic lists and you are asking where you get the memory usage from. Answer lies in the amount of data that you want to store.
WallysFerreira
Yeah, I had taken the size of lists in consideration when writing the solution for the first part but totally forgot about that for this second part. I’ll write some code that doesn’t use lists. Thanks
stevensonmt
You can usually get some benefit from changing
EnumtoStreamcalls as theStreamfunctions are lazy and do not allocate all that memory up front with each call.WallysFerreira
Oooh that’s great. I’ll give it a try
WallysFerreira
Using Streams apparently didn’t cut it. I’ll just not use lists. Thanks anyways
schneebyte
I had the same problem, took a while to figure out. Had to think in terms of ranges and not individual numbers.
al2o3cr
General tip about AoC problems: a favorite “part 2” tactic is to expand the problem in a way that makes inefficient solutions intractable. For instance, the solution for my day 5 part 2 was ~15 million so
locationswould likely be LARGEThere’s another one later on this year where the straightforward “generate and count” approach fails even more spectacularly - with my input, a counting approach would have taken quite a while to count to 15 trillion!
IMO this is the best part of AoC, since usually it takes months / years of “production” use to find out an algorithm is inefficient.
stevensonmt
Yeah when the ranges are massive even lazy evaluation is going to eat up memory. Like others have said, thinking in terms other than evaluating each item is key for this sort of problem.