Home > database >  Identical code using more than double the RAM memory on different computers
Identical code using more than double the RAM memory on different computers

Time:09-16

I'm creating a Minecraft clone in C with OpenGL.

I noticed today that when debugging the program on my laptop, the RAM usage is way higher that the RAM usage on my desktop PC (~1.3gb vs ~500mb). I'm getting these memory numbers from Visual Studio's diagnostics tools.

I'm using GitHub and even with the same branch, same commit, literally the exact same code, the laptop uses more RAM. I tried cleaning the solution, rebuilding, cloning again, nothing works.

The memory usage is different on the Windows Task Manager, too.

I'm out of ideas of what could be happening. The computers are on different platforms (laptop is Intel 10th, and desktop is Ryzen 3000), the laptop has less RAM (8gb vs 16gb). Both are using the latest Windows 10. I'm using Visual Studio Community 2019.

I'm not sure if a platform difference could cause such a huge impact on memory allocation.

CodePudding user response:

Many laptop architectures use something called unified memory. That is to say, there is only one big pool of memory that is shared between the CPU and GPU (or the equivalent portions on an APU).

On such architectures, allocating video memory is essentially the same thing as allocating RAM. It's all hidden away by the graphics drivers though.

So a graphics-heavy application using more RAM on a laptop than on a desktop with a discrete GPU is not surprising. However, it's not so much that it uses more memory, just that the memory it uses gets tabulated differently.

Assuming both platforms run at the same resolution and the same assets are loaded, you'd expect GPU Memory RAM usage on desktop would be roughly equivalent to RAM usage on the laptop.

Emphasis on the word roughly. Different graphic drivers use memory differently, so don't expect a 1-to-1 match here. For example:

  • A single 1080p framebuffer takes a few megabytes at the minimum, depending on how the driver interacts with the actual screen, how many of these are around is rarely obvious.
  • Tiled architectures can completely bypass needing large chunks of memory altogether.

That's the most likely scenario here.

  • Related