22

Anyone care to explain why programs nowadays use so much bloody RAM? We went to the moon on what amounted to a bunch of potatoes wired to each other, Linux (a whole bloody OS) with a graphical interface consumes only a couple hundred MB of RAM, but my IDE needs 1+GB?

Seriously, unless you're handling very large amounts of data (like a high res image or doing some insanely crazy math, I doubt there's any need for such high usage. I get it, 8/16GB is commonplace, but that doesn't mean more should be used for shits and giggles...

Comments
  • 7
    Imma correct myself before some one else does. By Linux I meant GNU/Linux.

    As an additional note, screw Google Chrome. If you're gonna mine our data, at least do it efficiently.
  • 18
    RAM is fast, keeping data in RAM is always faster than reading from hdd and often also faster than calculating it.

    For an IDE this means that it is beneficial to keep the whole project + its dependencies (and dependencies of your dependencies) in RAM when possible. Things like jumping to a functions implementation would be really slow if the IDE has to scan all files in the dependency tree to figure out where it is.

    Thus: software uses more RAM today because we have more RAM and doing so allows it to do more things faster. (IDEs back in the bad old days were basically a text editor with basic syntax highlighting and a compile button)
  • 1
    @ItsNotMyFault I'm not saying no RAM should be used, and yeah, HDD reads do suck a lot, but shouldn't there be ways of optimizing its usage? Like instead of loading the whole project plus deps plus whatever else they load, just load what's necessary for the open tabs and load the rest as you need it. Or keep all the project code in memory, with the necessary deps for those that are open, and load/unload deps as files are opened or closed.

    Because from what I can see, memory usage doesn't differ too much from a hello world project to a much larger one... At least on JetBrains IDEs...
  • 4
    These are all the hidden seevices in the OS that send your data to the CIA. They need some ram too.
  • 1
    1. Language abstraction
    2. Google Chrome
  • 2
    Unused RAM is wasted RAM
  • 1
  • 1
    @irene Please don't. I even linked the page that explained it all. Even with 0 free physical RAM I can still open up VSCode as many times as I want because guess what? Things not being used will be paged out to the disk! Wow! What an idea!
  • 1
    @irene It sounds like you're the type of person who keeps their gas tank at half constantly because, "Too much free gas is not so good, but too much used gas isn't good either"...

    Did that make any sense at all? No I don't think it does.

    RAM is a resource just like gas is, let people use it the way they want.
  • 1
    @Puddinglord It has more to do with using it reasonably. Just because I have RAM doesn't mean they can use as much as they like, unless there is no other way.

    Imagine I made cake for ten people, but two of them took half each. That leaves none for the rest. It's kinda the same idea, I shouldn't have to limit the number of programs I have open to two or three just because of lazy design. As a software developer I need a fair amount of RAM depending on the task at hand, and I don't want to have to use paging, otherwise I might as well simulate the program run by hand...

    Right now I'm sitting with 3 chrome tabs open, Spotify, a terminal session and CLion. 5GB of RAM used. Sure on my desktop that's passable, but that's more than half the RAM on my laptop. All I'm saying is they could do better without having to work themselves to death.
  • 1
    @irene Correct an engine does not make more gas but to that point a system does not "create" RAM. My desktop doesn't just pull a new stick of RAM off the shelf and install it whenever it thinks it needs more.
  • 1
  • 3
    TBH, they had a lot of tapes of precalculated landings, sites and so on, so the computers on the moon lander didn't do the heavy lifting but (back then) super computers on earth did (just as matlab will install a few gigs of precalculated stuff to be fast...)
  • 2
    Dont fall into this fallacy dear.

    I see you made a statement that, we went to moon with 4kb of ram, 32kb of storage. But you are looking at only side of a coin.

    Do you know what that code which is running on 4kb of ram is doing? Is that a microchip, or the heavy IBM wireframe?

    As far I gathered information from multiple sources, it was simple sensors sending data, and it is used to display sort of red-green stuff.

    What are we doing now-a-days? Slack notification is much more complex than the system in space shuttle.

    Take a look at this:
  • 3
    @fsck-mount Flowcharts traduce to code fairly easily, and that just looks like a bunch of conditionals with some of them having more than two options. Not exactly rocket science, and doesn't explain why the program is so RAM heavy.

    Plus no matter how intricate and advanced Slacks notification system is, I doubt it comes close to how complex Linux is, which runs on a tenth the RAM than the whole of Slack does. All I'm trying to argue is that programs have become too reliant on just throwing tons of data in RAM, instead of optimizing its usage, or so it seems from the outside at least.
  • 0
    @nanoandrew4
    There is always cost attached to it dear. You can always rewrite entire net/http in c. But will that help you to iterate fast?
  • 1
    @fsck-mount I understand companies needs for fast iteration, but fast iteration doesn't justify sloppy design. They're not idiots, they could have designed for better RAM usage, without a lot of trouble.

    I'm not saying limit it to a couple KB, I wouldn't mind them using a couple hundred megabytes if necessary. But a 1+GB is excessive for a program that literally sends a message to a group of people, they've been doing that for decades, or for a program that technically should just query a server for results, and deliver them (Chrome).
  • 0
    @nanoandrew4 You are looking at things on high-level bro. Please dig deep into the stack and understand why it has to be that way.

    There are bunch of reasons, like should not block main thread, shouldn't block fetcher, should execute them parallel.

    Its a rabbit hole, don't just make comments without understanding..

    IMHO, you will change your perception once you get idea on how ui component works. Try this:

    Divide screen into 3 components,
    On far ends of the screen, rotate images every 2, 3 seconds respectively.
    In the middle screen, just ask user for input, and load that URL, and render result.

    See how complicated it is. See how much memory it takes.

    Again we both are talking without even knowing what code in shuttle used to do!
  • 2
    @nanoandrew4 JetBrains products are known to be among the bloatiest, I've had better luck running VS than their IDEs
  • 1
    @fsck-mount If you look at the network usage on Chrome, a response to a search is about a megabyte or two in size.

    Refreshing images isn't a huge deal, games do it thirty/sixty times a second, and 2D games aren't nearly as heavy RAM wise.

    Also, the example you gave isn't that complicated. With JavaFX that would be relatively easy without hoarding massive amounts of RAM.
  • 0
    @hitko I wish they'd fix that :( I love their IDEs. I'll have to check VS out then, thanks for the tip!
  • 1
    @nanoandrew4 VS is still a masive IDE though, if you don't need advanced integration features / mostly work with interpreter languages try VS Code first, it's much lighter and still has a lot of common dev tools
  • 0
    @irene no, not at all.

    The point is, we are talking with whatever the information we have. We are not looking at the other side of the story.

    For example: Let's consider jet brains IDE. You know how this syntax correction, auto suggestion works..?
    It runs entire fucking AST underneath. You see how cool and hard it is?

    Did you guys ever work with some super experienced senior engineer? As in paired with one while working? Ever observed the amount of refraction that you can do with IntellJ?

    No body, would ever possibly do that refactoring without IntellJ. It has super power, pull member up, live templates, refactoring names, moving methods up and down, make them private, moving them to whole different class.., a lot and a lot..!

    Take a properly working build, and move stuff in and out, here and there.., and trust me you would need to touch things that depends on class X, because IntellJ will do that automatically for you. And build will pass. How many IDEs will do that?
  • 0
    Do you imagine visual studio doing that? At all? Ever? Not a chance;

    All developers might not need all those stuff. But understand your craft is really important. There is something called craftsmanship. Look it up!

    Just because you don't need all those, you moved away from tool because it is using too much ram.

    It is like, when you have hammer, everything looks like a nail. Hammer is not the right tool for you. Hammer still takes the same amount of space. You can't replace hammer with screwdriver.

    Screwdriver can't do what hammer can do. You can't ask hammer, why can't you be like screw driver and still do your job!

    Please understand, all those developers who are keeping effort are not fools. They are not building shit tools.

    If you really think they are, build the right one and show it to world. Like Linux, as he presented Git.
  • 0
    @irene oops, sorry.

    Only first line is applicable to you.
    No, not at all, is the reply to you.

    The entire remaining thing is to hitko and nandrendo. But I just got into that mode and written it out.

    Sorry, once again:)
  • 0
    @fsck-mount They're not shit tools, I love CLion and IntelliJ. But I criticize what I love because I want to see it improve. And sure, it has lots of cool features, but 1GB of RAM usage for a hello world program seems excessive. I can't imagine the program weighing more than a couple megabytes, and sure, they need to keep some deps in memory and so on, but that doesn't justify the insane RAM usage. I understand they need to use RAM, but surely there is room for optimization if you're using 1GB for a hello world program.

    I don't really get your hammer/screwdriver analogy, IDEs are built to build software, I'm not trying to use it as a photo gallery... And as such, they should be cautious of their system usage, since developers usually need the resources to test their programs.

    Also, to say that a minority of developers care about the RAM they have available is a bit disingenuous. Just look around devRant, you'll see rant after rant complaining about RAM usage of different pieces of software.

    If you disagree and think that software should be allowed to use all the resources it wants to, that's your opinion, and I have no problem with it. Not everyone is gonna agree with me. I just stated my opinion, and asked why these tools where so inefficient RAM-wise, as that is what it seems like to me.

    That'll be all.
  • 0
    @irene when did I? Where did I?
  • 0
    @nanoandrew4
    Nope, that's not my opinion. And show me program that takes 1GB of ram for hello world?

    Point is, don't compare things. They both have different purposes. They are doing things differently.

    If you think of improvement, take that piece of shit and fix it.
  • 0
    @irene all things that are obviously flawed;
    Sight few?

    @Nanoandrew4 which IDE you mean in your rant?
  • 0
    @irene
    Did you see me commenting about electron?

    Also, if you are concerned about it,
    Here we go..;

    Did you ever see how many things you need consider to build once and run everywhere apps?

    Just as side note, check how go compiles for almost any platform. Did you see how many architecture they need to keep in mind? Do you see the differences between api and api changes within OS, difference and different different OSs.

    You know how much effort it takes away by building app for all platforms with just by writing once. You see amount of developer time it saves?

    Which one is more costly? Developer time vs CPU time?

    PS: I'm a part of the team, where I closely monitor and manage engineering leads. We are 150+ engineers and have around 500+ micro services, that as 3 micro services for each developer. Please join us if you are interested to understand the amount cluttering that happens just with number of code bases.
  • 3
    I'll never understand why people defend bad ideas so fervently. Maybe so they don't look bad for agreeing with them? Sorry, but it makes you look bad and mentally lazy.

    @fsck-mount I'm talking about you.
  • 0
    @Root
    I was born in a family, where we fix if something is broken rather than playing blame game!

    @Root, because sudo fixit, won't fix it.
  • 0
    @Root also I don't see where I defended bad idea!
Add Comment