WallysFerreira

WallysFerreira

Using too much memory

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

Marked As Solved

hauleth

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.

Also Liked

al2o3cr

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 locations would likely be LARGE

There’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

stevensonmt

You can usually get some benefit from changing Enum to Stream calls as the Stream functions are lazy and do not allocate all that memory up front with each call.

stevensonmt

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.

Where Next?

Popular in Questions Top

JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod -- where is this set? Thanks.
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
kostonstyle
Hi all I want to have a unix time, from the current time plus 1 hour. DateTime.now + 1 hour How to get it in elixir? Thanks
New
chewm
Hi guys, nice to meet you to the whole forum, I’m new here, I’m trying to configure visual studio code for elixir, right now the intellis...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New

Other popular topics Top

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New

We're in Beta

About us Mission Statement